使用实体框架/ nhibernate和sql2008 geography数据类型

时间:2008-10-16 08:35:25

标签: c# sql-server-2008 geography

我正在使用sql express 2008和vs2008,用c#编写。

我有一个带有Geography列的db表,我需要将gps数据放入其中。当我尝试为此表创建实体框架映射时,它只是忽略了该列,并发出了一些关于无法映射此类列类型的警告。 然后我查看了nHibernate.Spatial项目,但它似乎只翻译了Geometry类型,而不是Geography。那里没有运气。 我被告知我可以使用一个视图将Geography转换为VarBinary,然后在创建的实体类中添加另一个将二进制反序列化为Geography的Property。我想这可以用于从数据库中读取数据,但我还需要将这些行插入到我的数据库中,并且我无法向视图中添加行。 我可以使用其他一些技巧,以便在我的c#代码中轻松读取和编写我的数据库中的地理数据吗?

2 个答案:

答案 0 :(得分:1)

我对EF知之甚少,但NHibernate允许你使用IUserType来扩展它的类型框架。在Ray Houston's Blog上有一点关于它。

我已成功使用它来创建一个类型,根据Ayende's example

将XmlSerialization用于Xml字段

答案 1 :(得分:0)

此时Entity Framework v1不支持SQL UDT - 2008 Spacial类型是UDT。

您可以使用WKB(byte [] / varbinary)存储长/纬数据。

作为附注,我注意到在下一版本(1.5 CTP)的Microsoft MIX09期间对UDT没有任何支持。也许我错过了什么。