【发布时间】:2013-10-21 05:15:47
【问题描述】:
目前我在尝试构建一个控制台应用程序时遇到了一些麻烦,我可以在其中将一些数据插入到我的数据库中并将 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();
}
【问题讨论】:
-
如果你想成为一名程序员,学习如何编写sql是值得的。我听说过这本书的好东西,在 10 分钟内自学 SQL。
-
我对 SQL 的了解达到了合理的水平,但我每天都会说我可能每 6 个月写一次。这只是数据输入的一个例子,所以为什么不尝试编写一个程序,这样我就不必编写 sql 并让它通过属性提供的编译器和 EF 内置数据验证的验证?还有适当的智能感知的额外好处。但是,嘿,如果您喜欢手动输入数据,那就试试吧。
标签: sql sql-server-2008 entity-framework entity-framework-5 database-migration