gpt4 book ai didi

c# - Entity Framework 未从 SQL Server 存储过程中获取空间类型数据

转载 作者:行者123 更新时间:2023-11-30 20:21:14 26 4
gpt4 key购买 nike

我将 Entity Framework 6 与 .Net 4.5 结合使用。我有一个选择和返回数据的存储过程。返回列之一是地理类型。

在 Visual Studio 2015 中,我右键单击 .edmx 文件,单击“从数据库更新模型...”。此操作获取我的存储过程并创建复杂类型的 storedprocedurename_Result。除地理类型外,所有列均以复杂类型对象表示。

同时,我的一张表也有地理类型,但该表使用地理列成功检索,并且运行正常。因此,我可以猜测 EF 支持地理类型并且正在运行。

但我不知道为什么它在生成的复杂类型中没有为我生成那个类型。

我试过手动添加

public System.Data.Entity.Spatial.DbGeography col_name { get; set; } 

但结果为空。

作为记录,我已尝试在 SQL Server Management Studio 中执行该过程,并且该列存在于那里。所以,问题出在 EF 中,而不是在数据库中。

我已经搜索并得到了几个这样的问题,但似乎没有人能够回答他们。

我无法理解对这个问题的回答。

提出上述问题的人使用了一种解决方法,正如他在评论中所说:“不。我不认为您可以自动获取地理类型。因为当您在模型浏览器中查看结果时,它会显示“不支持”。为了解决这个问题,我的存储过程通过 [pro_GeoLocation].STAsText() as pro_GeoLocationPoint 将地理类型转换为字符串。然后我在 C# 代码中使用正则表达式来获取经度和纬度。”但这不是一个好的选择,必须有一个解决方案。

最佳答案

好吧...
正如我所料(看到以前的帖子这样)这个问题没有答案,所以现在当我解决了这个问题后,我将链接分享让我获得地理对象的解决方案。

我尝试了很多事情并尝试了很多解决方案,我多次从 edmx 中删除了我的程序和 SP 条目。并重新创建,但一切都是徒劳的!
比起工作如此简单...按照下面的链接,我刚刚打开了 edmx,然后打开了模型浏览器,在模型浏览器中转到缺少该列的复杂类型定义,右键单击添加->标量属性->地理。并准确地给它取一个存储过程返回的名字。
就是这样,保存更改并运行您的代码,您必须像我获取的那样正确获取数据。
我想知道为什么 EF 无法获取数据以及获取函数/SP 的列信息提到的 EDM 类型不受支持。战略!

引用: http://www.scriptscoop.net/t/7c1ed5a0f89e/entity-framework-5-function-import-with-spatial-data.html

关于c# - Entity Framework 未从 SQL Server 存储过程中获取空间类型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34413287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com