我正在使用.Net 4.5的Entity Framework 6.我有一个存储过程来选择和返回数据.其中一个返回列是地理类型.在Visual Studio 2015中,我右键单击.edmx文件,单击"从数据库更新模型...".此操作获取我的存储过程并创建一个复杂类型的storeprocedurename_Result.除地理类型外,所有列都在复杂类型对象中表示.
同时我的一个表也有Geography类型,但该表是通过地理列成功检索的,并且运行正常.所以,我可以猜到EF支持地理类型并且正在运行.
但我不知道为什么在生成的复杂类型中没有为我生成那种类型.
我尝试手动添加公共System.Data.Entity.Spatial.DbGeography col_name {get; 组; 但它在结果中得到null.
为了记录我已经尝试在Sql Server管理研究中执行该过程,并且该列存在于那里.所以,它在EF端的问题不是DB端.
我已经搜索并得到了几个像这样的问题,但似乎没有人能够回答它们.
我无法理解这个问题的回答.
http://www.scriptscoop.net/t/2758a3668fde/geography-column-returned-in-stored-procedure-not-shown-in-entity-fram.html
,它是stackoverflow上的一个
/sf/ask/17360801/#=
上述问题的人使用了一种解决方法,正如他在评论中说的那样"不,我不知道"我认为您可以自动获取地理类型.因为当您在模型浏览器中查看结果时,它会显示"不支持".要解决此问题,我的存储过程会通过[pro_GeoLocation] .STAsText将地理类型转换为字符串( )作为pro_GeoLocationPoint.然后我在我的C#代码中使用正则表达式得到long和lat." 但这不是一个好的选择,必须有一个解决方案.
好吧......
正如我所期待的那样(看到以前这样的帖子)这个问题没有答案,所以现在当我解决了这个问题时,我将会分享解决方案,让我得到了地理对象.
我尝试了很多东西并尝试了很多解决方案,我多次从edmx中删除了我的程序和SP条目.重新创造但都是徒劳的!
比起如此简单的工作...按照下面的链接,我刚刚打开edmx,而不是打开模型浏览器,在模型浏览器中转到你的复杂类型定义,这是缺少列,右键单击add-> scalar property-> geography.并准确地命名它由存储过程重新调整.
多数民众赞成,保存更改并运行代码,您必须正确获取数据.
我想知道为什么EF无法获取数据和获取函数/ SP的列信息,它提到EDM类型不受支持.Strage!
参考: http ://www.scriptscoop.net/t/7c1ed5a0f89e/entity-framework-5-function-import-with-spatial-data.html