如何在 EF4.1 中使用 DbGeography 空间数据类型

Posted

技术标签:

【中文标题】如何在 EF4.1 中使用 DbGeography 空间数据类型【英文标题】:How do I use the DbGeography Spatial Data Type with EF4.1 【发布时间】:2011-08-09 19:02:17 【问题描述】:

我正在使用 Entity Framework 4.1 Code First 并且一直在尝试添加一个字段来表示一个地理列。但是,无法识别数据类型 DbGeography。我在网上找到了对 System.Data.Spatial 命名空间的引用,但我找不到哪个程序集包含它。我发现一个网站说我需要为 SQL Server 2008 R2 安装系统 CLR 类型,但是当我尝试安装程序时说我已经安装了更新的版本。我尝试添加几个不同的 SqlServer 程序集,但似乎都不起作用。


可能会看到此错误

命名空间中不存在类型或命名空间名称“Spatial” 'System.Data'(您是否缺少程序集引用?)

【问题讨论】:

【参考方案1】:

你不会找到它,因为它不存在。它仅在实体框架的下一版本 (Entity Framework July 2011 CTP) 的第一个 CTP 中可用。此 CTP 之前的实体框架不支持 SQL 空间类型。

【讨论】:

那行得通。我想我很难理解实体框架版本是如何宣传的。也许如果他们将其称为“Entity Framework 4.2(2011 年 7 月 CTP)”(以匹配程序集上的版本),我会理解它是 EF 4.1 之后的版本。 此外,它已从 EF 4.2 的最终版本中撤出,因此您在 .NET 4.5 之前一直处于停滞状态。 我刚刚安装了 EF Power Tools 的 Beta 3 并遇到了这个错误,我还不能将 .NET 升级到 4.5,但至少我知道这是从哪里来的。

以上是关于如何在 EF4.1 中使用 DbGeography 空间数据类型的主要内容,如果未能解决你的问题,请参考以下文章

DbGeography 多边形到 JSON

存储用户地理位置数据的正确类型是啥?我可以在 DbGeography 中存储准确性吗?

Azure 移动应用服务器在 GET 上不返回 DBGeography

组合几个 DbGeography 多边形

实体框架 DbGeography 给了我一个纬度 FormatException 错误

EF4.1 如何将属性映射到列