【问题标题】:Entity framework 6 and spatial data实体框架 6 和空间数据
【发布时间】:2014-07-14 21:13:10
【问题描述】:

我有空间数据类型的数据库。我使用数据库优先模型和实体框架 6.0.2 和 .NET 4.5。当我尝试使用生成的类时,出现以下错误:

指定的架构无效。错误: 未加载关系“Name_FK1”,因为“Model.TypeB”类型不可用。 以下信息可能有助于解决先前的错误: “Data.TypeB”类型的“Position”属性具有“System.Data.Spatial.DbGeography”属性类型,无法映射到原始类型。

我使用空间类型的所有表都列出了相同的错误。 ‘Name_FK1’是外键关系。

我做错了什么?

感谢您的帮助。

【问题讨论】:

    标签: c# entity-framework spatial


    【解决方案1】:

    我修好了!为自己感到骄傲:)

    希望这对其他人有所帮助。所以,从上面的链接 (http://msdn.microsoft.com/en-US/data/dn469466) 有这一行:

    空间类(例如 DbGeography、DbGeometry)已从 System.Data.Spatial => System.Data.Entity.Spatial

    在我收到此错误之前:

    未加载关系“IntakeModel.FK_Assignee_HomeLocation” 因为“IntakeModel.Location”类型不可用。这 以下信息可能有助于解决先前的错误: “ConsoleApplication3.Location”类型上的属性“Geo”具有 'System.Data.Spatial.DbGeography' 的属性类型不能是 映射到原始类型。

    我只需要在我的 Location.cs 文件中更改它:

    public System.Data.Spatial.DbGeography Geo { get; set; }
    

    到这里:

    public System.Data.Entity.Spatial.DbGeography Geo { get; set; }
    

    问题解决了。感谢您发布该链接@Ricky Jones。

    【讨论】:

    • 但是 System.Data.Entity.Spatial 在 EntityFramework.dll 中。你是说我必须在我的 POCO 实体类库中添加对实体框架的引用!?
    【解决方案2】:

    我按照以下链接上的说明进行操作,这导致了我需要解决的其他问题,但它确实解决了我的空间问题。

    http://msdn.microsoft.com/en-US/data/dn469466

    【讨论】:

    • 这是如何升级应用程序的链接。我有新的应用程序,我使用 NuGet 添加 EF 6.0,然后添加新的数据 - ADO.NET 实体数据模型。这对我不起作用。
    • 我收到了与您完全相同的错误消息,我会确保您没有引用 System.Data.Entity.dll,然后执行第 3 步,即删除代码生成模板然后单击设计器并选择添加代码生成项...这是我唯一能提供的,因为它对我有用。
    • 我试过了,但是失败了。当我尝试添加 EF 6 时,我只有 EF 5.x DbContext Generator 选项。 EF 6.x DbContext Generator 没有选项。我 100% 安装了 EF 6 而不是 EF 5。
    【解决方案3】:

    此问题是因为您为 EF 6.0 edmx 创建了 EF 5.x DbContext Generator 要解决此问题,您只需删除旧的 DbContext Generator 并使用 EF 6.0 DbContext Generator 创建一个新的。

    这对我来说很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-08
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 2014-04-30
      • 2013-10-30
      相关资源
      最近更新 更多