Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用.NET 4.8在ASP.NET应用程序中使用SQL Server 2017的地理数据类型?_Asp.net_.net_Sql Server_Datareader - Fatal编程技术网

是否可以使用.NET 4.8在ASP.NET应用程序中使用SQL Server 2017的地理数据类型?

是否可以使用.NET 4.8在ASP.NET应用程序中使用SQL Server 2017的地理数据类型?,asp.net,.net,sql-server,datareader,Asp.net,.net,Sql Server,Datareader,我无法将SQL Server 2017中的数据库配置为在ASP.NET应用程序中使用地理数据类型为的数据库 在我的另一个问题中,我概述了各种不起作用的变通办法。 链接: 是否有人可以在ASP.NET应用程序中使用SQL Server 2017中的Geography类型成功确认。如果是,配置是什么 因为唯一的解决方法是将地理信息数据转换为字符串,然后在客户机上对其进行反序列化,这是一种可怕的操作方式…我在解决方案中使用OData v4 API,允许农民绘制农场和围场地图,并在这些地图上放置大门 在

我无法将SQL Server 2017中的数据库配置为在ASP.NET应用程序中使用地理数据类型为
的数据库

在我的另一个问题中,我概述了各种不起作用的变通办法。 链接:

是否有人可以在ASP.NET应用程序中使用SQL Server 2017中的
Geography
类型成功确认。如果是,配置是什么


因为唯一的解决方法是将
地理信息
数据转换为字符串,然后在客户机上对其进行反序列化,这是一种可怕的操作方式…

我在解决方案中使用OData v4 API,允许农民绘制农场和围场地图,并在这些地图上放置大门

在模型中,使用
System.Data.Entity.spatical.DbGeography
作为要在SQL中作为地理位置的字段的数据类型

在我们的解决方案中,围场作为多边形和多多边形存储在
DbGeography
字段中,闸门作为点存储在
DbGeography
字段中。我们可以在一个边界框中查询所有围场,计算面积和距离。。。几乎所有的地理空间查询我们的客户可以扔给我们

值得注意的当前软件包(但去年已运行相同软件包的早期版本):

  • 实体框架6.4.0
  • Microsoft.AspNet.OData 7.3.0
  • Microsoft.AspNet.WebApi 5.2.7
  • Microsoft.Spatial 7.6.2
  • Microsoft.SqlServer.Types 14.0.1016.290
  • Newtonsoft.Json 12.0.1
如果您需要为导入或导出与GeoJSON源接口,我也会使用这些包,但您应该能够在没有这些包的情况下编写包含的应用程序:

  • GeoJSON.Net 1.1.72
  • GeoJSON.Net.Contrib.EntityFramework 0.1.3
  • GeoJSON.Net.Contrib.MsSqlSpatial 0.3.2
  • GeoJSON.Net.Contrib.Wkb 0.1.3
OData序列化程序在序列化或反序列化这些类型时未造成任何问题,对其中一个范围的查询将返回以下结果:

{
    "@odata.context": ".../$metadata#Paddocks(17518)/Perimeter",
    "Geography": {
        "CoordinateSystemId": 4326,
        "WellKnownText": "POLYGON ((145.27786016464236 -37.855119294600946, 145.27687250851116 -37.855329119608058, 145.276149480753 -37.855902375057504, 145.27588481613736 -37.856685463693672, 145.2761494445584 -37.857468560509645, 145.27687247231654 -37.85804183231879, 145.27786016464236 -37.858251665505662, 145.27884785696818 -37.85804183231879, 145.27957088472633 -37.857468560509659, 145.27983551314736 -37.856685463693672, 145.27957084853173 -37.855902375057504, 145.27884782077356 -37.855329119608058, 145.27786016464236 -37.855119294600946))"
    }
}
如果您在客户端使用地理数据类型时遇到问题,您会发现它的语法是正确的,因此可以克服,但您需要发布您遇到的更具体的问题,如果您在客户端使用GeoJSON,您可能会发现更多工具和通用支持,映射组件(如GeoJSON)本机使用GeoJSON,因此如果您从零开始使用映射解决方案,您可能会发现直接进行GeoJSON集成更容易

在我的另一个问题中,我概述了各种不起作用的变通办法

由于您没有包含任何指向以前问题的链接,我不确定您以前的相关问题是什么,但我希望这会给您带来坚持解决方案的信心


更新 而不是遵循有关SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath(“~/bin”))的建议

在部署期间,我手动将x86版本的类型DLL复制到bin文件夹中(因为服务器运行的是32位IIS。如果您的服务器在64位模式下运行,请使用x64版本)

我还在web.config中添加了此绑定重定向:

<assemblyBinding>
    <dependentAssembly>
        <assemblyIdentity name="Microsoft.SqlServer.Types" 
                          publicKeyToken="89845dcd8080cc91" culture="neutral" />
        <bindingRedirect oldVersion="10.0.0.0" newVersion="14.0.0.0" />
    </dependentAssembly>
</assemblyBinding>


连接字符串或其他内容没有什么特别之处。

谢谢。我使用与您相同的Microsoft.SqlServer.Types版本和相同的实体框架,。但问题不在于实体框架,因为即使是普通的旧Datareader也会导致na异常。顺便说一句,我已经用引用问题的链接更新了问题。如果不太麻烦的话,您可以显示您的连接字符串和web配置的相关部分吗?好的,如果可以的话,我会在那里帮助您,我已经用一些我忘记的其他元素更新了我的答案;)