EF6仍然会生成具有错误用法的空间类

时间:2014-10-03 10:29:33

标签: c# entity-framework entity-framework-6 geospatial

我有几个实体[表格]包含DbGeography [地理]列和一个使用ObjectParameterIObjectContextAdapter的存储过程。

每次我从数据库更新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生成正确的路径?

1 个答案:

答案 0 :(得分:2)

您仍在使用旧版Entity Framework中的代码生成。确保已将项目正确更新为EF6。

  

如果您使用EF Designer创建了任何模型,则需要更新代码生成模板以生成与EF6兼容的代码。

     

注意: 目前只有Visual Studio 2012和2013可用的EF 6.x DbContext Generator模板。

     
      
  1. 删除现有的代码生成模板。这些文件通常名为<edmx_file_name>.tt<edmx_file_name>.Context.tt,并嵌套在解决方案资源管理器中的edmx文件下。您可以在解决方案资源管理器中选择模板,然后按 Del 键将其删除。

         

    注意: 在网站项目中,模板不会嵌套在您的edmx文件下,而是在解决方案资源管理器中与它一起列出。 < / p>      

    注意: 在VB.NET项目中,您需要启用“显示所有文件”才能看到嵌套的模板文件。

  2.   
  3. 添加适当的EF 6.x代码生成模板。在EF Designer中打开模型,右键单击设计图面并选择添加代码生成项...

         
        
    • 如果您使用的是DbContext API(推荐),则数据标签下会显示 EF 6.x DbContext Generator

           

      注意: 如果您使用的是Visual Studio 2012,则需要安装EF 6工具才能拥有此模板。有关详细信息,请参阅获取实体框架。

    •   
    • 如果您使用的是ObjectContext API,则需要选择在线标签并搜索 EF 6.x EntityObject Generator

    •   
  4.   
  5. 如果您将任何自定义应用于代码生成模板,则需要将其重新应用于更新的模板。

  6.   

有关详细信息,请参阅Upgrading to EF6