我有几个实体[表格]包含DbGeography
[地理]列和一个使用ObjectParameter
和IObjectContextAdapter
的存储过程。
每次我从数据库更新EDMX模型时,我都需要重写:
//for each geography column
public System.Data.Spatial.DbGeography geoColum
//for class where stored procedure is generated
using System.Data.Objects;
using System.Data.Objects.DataClasses;
到
//for each geography column
public System.Data.Entity.Spatial.DbGeography geoColum
//for class where stored procedure is generated
using System.Data.Entity.Core.Objects;
using System.Data.Entity.Core.Objects.DataClasses;
在我的项目中,因为它不使用EF生成的类进行编译。
为什么EF 6仍然会产生这个错误?如何强制EF生成正确的路径?
答案 0 :(得分:2)
您仍在使用旧版Entity Framework中的代码生成。确保已将项目正确更新为EF6。
如果您使用EF Designer创建了任何模型,则需要更新代码生成模板以生成与EF6兼容的代码。
注意: 目前只有Visual Studio 2012和2013可用的EF 6.x DbContext Generator模板。
删除现有的代码生成模板。这些文件通常名为
<edmx_file_name>.tt
和<edmx_file_name>.Context.tt
,并嵌套在解决方案资源管理器中的edmx文件下。您可以在解决方案资源管理器中选择模板,然后按 Del 键将其删除。注意: 在网站项目中,模板不会嵌套在您的edmx文件下,而是在解决方案资源管理器中与它一起列出。 < / p>
注意: 在VB.NET项目中,您需要启用“显示所有文件”才能看到嵌套的模板文件。
添加适当的EF 6.x代码生成模板。在EF Designer中打开模型,右键单击设计图面并选择添加代码生成项...
如果您使用的是DbContext API(推荐),则数据标签下会显示 EF 6.x DbContext Generator 。
注意: 如果您使用的是Visual Studio 2012,则需要安装EF 6工具才能拥有此模板。有关详细信息,请参阅获取实体框架。
如果您使用的是ObjectContext API,则需要选择在线标签并搜索 EF 6.x EntityObject Generator 。
- 醇>
如果您将任何自定义应用于代码生成模板,则需要将其重新应用于更新的模板。
有关详细信息,请参阅Upgrading to EF6。