在 vnext 中,使用Entity Framework 7(https://github.com/aspnet/EntityFramework)如何在模型(代码优先方法)中使用空间数据类型(例如DbGeography
)来保存点,为表创建模型时的形状等。
e.g。
public DbGeography gps_points {get; set;}
我无法使用DbGeography
。
更新
确认,此功能尚未在EF7中提供,但可能在将来的版本中提供。
跟踪任何更改,请参阅:
答案 0 :(得分:2)
在实体框架的github存储库中引用your own issue,似乎还没有实现。由于里程碑设置为“Backlog”,似乎这个问题在不久的将来不会得到解决。
如果您不需要在数据库端按地理位置处理数据(例如,在边界框或交叉点中搜索),则可以将数据保存为Well-known text。如果EF7将来支持空间数据,则可以轻松地将其转换为数据库几何类型。
请注意数据库的字符串长度限制,因为对于复杂的形状,WKT可以保持安静。
答案 1 :(得分:0)
您需要添加对System.Data.Entity.Spatial
的引用。我不认为它现在默认包含在EF参考中,因此你不能使用DbGeography。
请记住,一切都是即插即用的!
答案 2 :(得分:0)
EF5中引入了对空间类型的支持。但是,在EF5中,仅当应用程序以.NET 4.5为目标并运行时才支持空间类型。
以针对.NET 4和.NET 4.5的应用程序支持以EF6空间类型开头。
Microsoft SQL Server提供程序依赖于可能需要安装的一些其他低级库。
使用Microsoft SQL Server的空间类型的先决条件
SQL Server空间支持取决于低级别的SQL Server特定类型SqlGeography
和SqlGeometry
。这些类型存在于Microsoft.SqlServer.Types.dll
程序集中,并且此程序集不作为EF的一部分或作为.NET Framework的一部分提供。
安装Visual Studio时,它通常还会安装一个版本的SQL Server,这将包括安装Microsoft.SqlServer.Types.dll
。
如果未在要使用空间类型的计算机上安装SQL Server,或者从SQL Server安装中排除了空间类型,则需要手动安装它们。这些类型包含在SQL Server功能包中,并且SQL Server 2008和SQL Server 2012存在不同的程序集。