首先在Entity Framework 5模型中,似乎由于类文件的生成方式而发生了一些重大变化(不再生成代码,而是T4模板)

2个例子:


生成的上下文文件不再实现IDisposable
没有构造函数接受连接字符串了


还有更多重大变化吗?对他们有什么解决方案?

最佳答案

现在,从Entity Framework 5中的模型生成的默认代码继承了DbContext而不是ObjectContext。

它仍然实现IDisposable,但是如果您从类似于以下代码的一行中得到错误:

using (var mymodel = new MyModelContext()) { ... }


...抱怨没有实现IDisposable,那么您的问题很可能是您的模型是在引用EF5的单独程序集中定义的,而您尚未向项目添加EF5引用。

正如Ladislav Mrnka在他的答案中已经提到的那样,如果要将连接字符串传递给构造函数,则必须手动创建自己的构造函数才能执行此操作。

如果您想将Entity Framework切换回旧的生成代码样式,它将自动生成您要查找的构造函数,请按照以下步骤操作:


单击EDMX文件的设计器图,然后查看属性窗口。找到一个名为“代码生成策略”的属性,并将其设置为“默认”,而不是“无”。这将告诉Visual Studio在一个大文件中的MyModel.Designer.cs中开始为您的对象模型创建代码,这次使用ObjectContext而不是DbContext。
从您的EDMX文件下面删除以下子文件:MyModel.Context.tt,MyModel.tt。这些是您不再需要的自动生成的文件。如果不删除它们,将导致类命名冲突,因为将两次创建对象。

10-07 13:12
查看更多