В настоящее время у меня немного беспорядок, пытаясь создать консольное приложение, где я могу вставить некоторые данные в свою базу данных и вывести sql в файл как дополнительный. Идея заключается в том, что я могу использовать их для переноса данных или чего-то подобного.Создание полезной sql из Entity Framework для использования при миграции данных
У меня есть несколько таблиц поиска, которые я хотел бы предварительно заполнить данными, и я думаю, что это лучше, чем писать sql вручную. Если кому-то нужно найти значение, оно будет прямо в коде.
Я использую EF Tracing и то, что у меня до сих пор позволяет мне войти рамки SQL субъект создает, выполнив следующие действия
Я замкнув в их действия, чтобы получить доступ к кальке
private void WriteSqlToString(CommandExecutionEventArgs args)
{
sqlTrace.Append(args.ToTraceString());
}
Что дает что-то вроде этого
insert [dbo].[Members]([EmailAddress], [FirstName], [LastName])
values (@0, @1, @2)
select [Id]
from [dbo].[Members]
where @@ROWCOUNT > 0 and [Id] = scope_identity()
-- @0 (dbtype=String, size=60, direction=Input) = "[email protected]"
-- @1 (dbtype=String, size=-1, direction=Input) = "TestFirstName"
-- @2 (dbtype=String, size=-1, direction=Input) = "TestLastName"
Я буду первым, чтобы держать меня за руку, потому что я не очень хорошо писать SQL вручную. Я немного перепутал с этим, чтобы попытаться выполнить его в sqlserver express, но продолжать получать ошибки, потому что переменные не объявлены.
Неужели люди думают, что стоит продолжать пытаться заставить это работать, или я не вижу лучшего решения здесь?
Вот еще немного кода для справки
public void CreateSqlFile()
{
using (MyContext context = tracingContextFactory.Create(WriteSqlToString))
{
Migrate(context);
context.SaveChanges();
}
StreamWriter file = new StreamWriter(migrationPath);
file.WriteLine(sqlTrace.ToString());
file.Close();
}
Если вы хотите быть программистом, стоит потратить время, чтобы научиться писать sql. Я слышал хорошие вещи об этой книге, научите себя SQL за 10 минут. –
Я знаю SQL на разумном уровне, но на повседневной основе я бы сказал, что я пишу, может, один раз каждые 6 месяцев.Это всего лишь случай ввода данных, поэтому почему бы не попробовать и написать программу, так что мне не нужно писать sql, а также проверить проверку компилятора и EF в встроенной проверке данных, предоставляемой приложением? Также добавлен бонус надлежащего intellisense. Но эй, если ручной ввод данных - это твоя вещь, то есть у нее. – Neil