将项目从使用Entity Framework 5升级到Entity Framework 6后(虽然NuGets更新功能)我在生成的Entities类上收到以下错误:
错误1名称空间'System.Data'中不存在类型或命名空间名称'Objects' (你错过了一个程序集引用吗?)
我理解这是因为命名空间已经更改,我可以通过更改我的导入来手动修复错误:
using System.Data.Objects;
和using System.Data.Objects.DataClasses;
至:
using System.Data.Entity.Core.Objects;
但是生成了文件,因此我需要在每Update model from Database
之后重新应用此修复程序。
是否需要更改一些内容才能让EF在没有此错误的情况下生成模型。
答案 0 :(得分:62)
我认为您的问题是,生成权利和上下文的T4模板仍处于EF版本5中。
首先,您必须删除当前代码生成项,这些项位于模型的代码后面,即<Modelname>.Context.tt
和<Modelname>.tt
。接下来添加一个新的EF版本6代码生成器{{1 }}
答案 1 :(得分:37)
这是我如何成功将Entity Framework v5升级到v6的经验:
缩略语:
清单:
using System.Data.EntityClient;
,这是EF5参考。using System.Data.Entity.Core.EntityClient;
。仍然卡住?这个清单是一个社区维基,随时可以编辑这个清单,以帮助其他倒霉的灵魂,他们还在敲打可能是EF6配置的砖墙。
在考虑EF之前,请先了解其他选项。它比其他选项慢100倍,它提供的内容非常复杂,实体GUI充满了错误并且具有奇怪的可用性问题,我们将不得不撕掉所有的EF6代码并用少于5分钟的代码替换它,以便在Dapper中进行5秒的查询。
答案 2 :(得分:0)
我知道现在回答这个问题太迟了。
按照以下步骤为我完成这项工作。
从现有的abc.tt文件中复制代码。 删除abc.tt文件。 再次将所有代码复制到ABC.tt文件中。 复制代码后,只需保存文件并构建解决方案,它还将重新生成完整的.cs文件
答案 3 :(得分:0)
Microsoft提供了有关升级到EF6的页面:https://docs.microsoft.com/en-us/ef/ef6/what-is-new/upgrading-to-ef6
注意:这可能与上面显示的@Kim Ki Won内容相同,但该链接不再起作用。