我正在尝试为具有System.Data.Entity.Spatial.DbGeography类型属性的实体创建OData服务。该实体是EntityFramework上下文(数据库)的一部分。将数据输入/输出Db工作正常。我可以从OData服务请求数据。它作为WKT字符串返回。但是,当我将一个类似的实体POST回到Db中插入一条新记录时,我得到错误"没有无参数构造函数"从框架。这是我猜的DbGeography构造函数,因为当POST请求中的属性设置为null时,一切都很好。
我发现OData应该在System.Spatial.Geography(我使用System.Spatial.GeographyPoint)上工作得更好。即便如此,我也抱怨在发布数据时没有实现IConvertible接口。
有没有"直接"使用Entity.DbGeography(和类似)类型获取数据并进入OData服务的方法?在使用MVC模型和控制器的情况下,我找到了一些绑定方法 - 这里需要类似的操作吗?或者我应该"只是"使用System.Spatial.Geography进行OData并转换为DbGeography for EF?类似的东西:
Geography --> OData service --> .net translate --> DbGeography --> EF --> DB
我发现了另一个与此类似的问题:OData + EF. Writing geography types 但那里根本没有答案也没有评论。我认为这个问题可能有一些我无法看到的微不足道的解决方案,或者没有人有同样的问题(很难相信......)?