C# 如何使用EntityFramework 4.0将C应用程序升级到4.3.1

C# 如何使用EntityFramework 4.0将C应用程序升级到4.3.1,c#,entity-framework-4.3,C#,Entity Framework 4.3,我们有一个ASP.Net应用程序,它是使用EntityFramework4.0构建的,EntityFramework4.0是.NET4.0的一部分。在阅读了大量关于新特性的文章,最重要的是,阅读了4.1、4.2和4.3生成的更干净的SQL之后,我们决定借此机会将应用程序升级为使用4.3.1 我使用NuGet将4.3.1安装到应用程序中,它成功地安装了EntityFramework.dll;它添加了对它的引用,当我构建时,它被添加到bin文件夹中。在运行时,一切都可以正常运行,但是,在SQL探查器

我们有一个ASP.Net应用程序,它是使用EntityFramework4.0构建的,EntityFramework4.0是.NET4.0的一部分。在阅读了大量关于新特性的文章,最重要的是,阅读了4.1、4.2和4.3生成的更干净的SQL之后,我们决定借此机会将应用程序升级为使用4.3.1

我使用NuGet将4.3.1安装到应用程序中,它成功地安装了EntityFramework.dll;它添加了对它的引用,当我构建时,它被添加到bin文件夹中。在运行时,一切都可以正常运行,但是,在SQL探查器中查看并使用Hibernatine Rhinos的实体框架探查器,SQL看起来是相同的

由于NuGet所做的唯一一件事就是添加一个引用,因此我假设我需要做一些其他事情来强制应用程序在运行时使用4.3.1,但我无法确定我必须做什么

我理解SQL对于正在运行的查询可能完全相同,并且仅仅查看生成的SQL可能不会显示任何差异,但我希望能够确认新版本确实在运行时使用

我是否需要在web.config中添加其他内容以确保使用4.3.1,或者我所做的已经足够了?当然,我需要在某些地方进行更改,以便从新的EntityFramework.dll而不是标准的.Net4.0库中获取System.Data.Entity之类的内容

感谢您的帮助。
Ste

要使EF4.3.1可用,您应该首先安装EF4.1更新1并使用最新的NuGet

EF4.0是数据库优先或模型优先,如果您想升级到EF4.3,最简单的方法是使用代码生成器:

这是对答案的重复说明,包括步骤。这要归功于他,也归功于我从他那里得到的大部分信息

按照说明安装EF 4.3.1

安装EF 4.3.1 请注意,在升级之前,这将暂时中断您的代码。因此,我建议在继续之前进行备份

如果尚未安装NuGet,请安装它。 打开NuGet软件包管理器控制台VS2010菜单栏>工具>库软件包管理器 加载完成后,请执行此命令,确保在点击enter:Install Package EntityFramework-Version 4.3.1之前从下拉列表中选择正确的项目 如前所述,将EF 4.0升级到EF 4.3.1,我只需跳到步骤4

从EF 4.0升级到EF 4.3.1 警告一句——仅仅因为您安装了EF 4.3.1,并不意味着您就完成了。你刚才所做的只是给自己一个选择,让自己使用新的模板,这些模板是我自己做的。现在是使用这些新模板的时候了

打开EDMX设计视图。 在设计表面上;右键单击>添加代码生成项目 从左侧菜单中选择联机模板 搜索DbContext 从列表中选择EF 4.x DbContext生成器 将此项目的名称与EDMX的名称不同_____TT填充空白。我使用了uuuu DBCModel.tt-示例:FooDBCModel.tt 单击“添加” 验证是否已创建两个文件:例如FooDBCModel.tt和FooDBCModel.Context.tt。 修复您现在轻微损坏的代码 您的代码现在无法编译-不要绝望-这是因为您刚才所做的是将System.Data.Objects.ObjectContext替换为新的和改进的以及适合我的System.Data.Entity.DbContext Yaaaaay

您需要更新所有CUD创建、更新和删除方法。 而不是在此处使用context.addToEntityName。。。使用context.EntityNameHere.Add。。。 示例:context.AddToProductsproduct>context.Products.Addproduct 您现在可以访问数据库属性 您现在可以访问该条目。。。方法 现在,您可以显式地声明在更新context.SaveChanges期间要更新的属性。感兴趣的看 在我看来,做这些额外的工作是完全值得的。EF4.0对于它是什么太有限了。EF 4.3.1更加灵活,我喜欢提供的语法糖。我相信EF5.0会更好,但我现在还没能做到


享受。

感谢您的快速回复。安装EF4.1是我不知道我需要做的事情-在4.3.1周围肯定没有关于它的说明。我现在已经安装好了,谢谢。然而我仍然想知道如何证明新版本已经到位,并且正在生成SQL查询。非常好地描述了步骤,但您只需要采取另外一个预防措施,即在第二段中,在第一步后,双击您的.edmx文件,选择概念实体模型,然后在“属性”窗口将“代码生成策略”值设置为“无”。如果你错过了这一步,代码将无法编译并抱怨重复的实体类这很奇怪,我从来没有遇到过这个问题。谢谢你指出这一点,尽管我从未想到过。我看了一下我的项目,我有一种感觉 ht已自动更改,因为它已设置为“无”。这是我需要调查的事情。