![](/img/trans.png)
[英]Using SQL Server 2012 Geography Data Type with ASP.Net - DataReader.GetFieldType(x) returned null
[英]Is it possible to use Geography data type of SQL Server 2017 in ASP.NET application using .NET 4.8?
我无法在 ASP.NET 应用程序中配置为在 SQL Server 2017 中使用具有Geography
数据类型的数据库。
在我的另一个问题中,我概述了各种不起作用的解决方法。 链接: SO问题
任何人都可以在 ASP.NET 应用程序中成功使用 SQL Server 2017 中的Geography
类型进行确认。 如果是,配置是什么?
唯一的解决方法是将geography
数据转换为字符串,然后在客户端反序列化它,这是一种可怕的做事方式......
我在一个解决方案中使用了 OData v4 API,该解决方案允许农民绘制他们的农场和围场的地图,并且他们可以在这些地图上放置大门。
在您的模型中,使用
System.Data.Entity.Spatial.DbGeography
作为您希望在 SQL 中成为Geography 的字段的数据类型
在我们的解决方案在围场存储在DbGeography
领域的多边形和MULTIPOLYGON,门都存储在DbGeography
领域POINT。 我们可以查询边界框中的所有围场,计算面积和距离......几乎所有我们的客户可以向我们提出的地理空间查询......
值得注意的当前包(但是相同包的先前版本已在去年运行):
如果您需要与 GeoJSON 源进行交互,无论是导入还是导出,我也使用这些包,但您应该能够在没有它们的情况下编写包含的应用程序:
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))"
}
}
如果您在客户端使用 Geography 数据类型时遇到问题,您会发现它只是语法,因此可以克服,但您需要发布您遇到的更具体的问题,您可能会发现更多的工具和通用如果您在客户端使用 GeoJSON,那么像Leaflet js这样的映射组件本身就使用GeoJSON,所以如果您从头开始使用映射解决方案,您可能会发现直接进行 GeoJSON 集成更容易。
在我的另一个问题中,我概述了各种不起作用的解决方法
由于您没有包含任何指向您之前问题的链接,我不确定您之前的相关问题是什么,但我希望这能让您有信心坚持解决方案。
而不是遵循有关SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
我在部署期间手动将类型 dll 的 x86 版本复制到 bin 文件夹中(因为服务器运行的是 IIS 32 位。如果您的服务器在 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>
连接字符串或其他任何东西都没有什么特别之处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.