目前,我在尝试构建一个控制台应用程序时遇到了一些麻烦,我可以在其中将一些数据插入到我的数据库中,并将 sql 作为额外的文件输出到文件中。我的想法是我可以将这些用于数据迁移或类似的东西。
我有几个查找表,我想用数据预先填充,我认为这比手动写出 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@email.com"
-- @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();
}