我安装了Nuget Microsoft.SqlServer.Types
并且有DLL版本的问题。
我已阅读自述文件并在global.asax(Webform web app)
protected void Application_Start(object sender, EventArgs e)
{
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
}
类型' System.InvalidCastException'的例外情况发生在System.Data.DataSetExtensions.dll中,但未在用户代码中处理
其他信息:[A] Microsoft.SqlServer.Types.SqlGeography kan niet worden geconverteerd naar [B] Microsoft.SqlServer.Types.SqlGeography。类型A是afkomstig uit Microsoft.SqlServer.Types,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91 in de context默认op locatie C:\ WINDOWS \ assembly \ GAC_MSIL \ Microsoft.SqlServer.Types \ 10.0.0.0__89845dcd8080cc91 \ Microsoft.SqlServer.Types.dll。类型B是afkomstig uit Microsoft.SqlServer.Types,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91 in de context默认op locatie C:\ WINDOWS \ assembly \ GAC_MSIL \ Microsoft.SqlServer.Types \ 11.0.0.0__89845dcd8080cc91 \ Microsoft.SqlServer.Types.dll。
这条线失败了:
var bla = myDataTable.AsEnumerable().Select(x => new
{
Loc = x.Field<Microsoft.SqlServer.Types.SqlGeography>("theLocation") // breaks
}).ToList();
theLocation是我的Sql Server 2008中的数据类型地理位置,所以不幸的是没有2016 FOR JSON PATH
选项。
PS。一些背景信息:我安装了nuget GeoJSON.Net和GeoJSON.Net.Contrib.MsSqlSpatial以获取地理数据类型行作为geojson。或者我应该在我的sql中添加.tostring并将其解析为geojson点?
答案 0 :(得分:3)
从Arne Klein (8 May 2014 5:08 AM)
找到SqlClient默认加载Microsoft.SqlServer.Types版本10.0和SQL Server 2012 V. 11是必需的。将此问题添加到web.config。
可以解决此问题
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
如果可以更新Nuget包以自动将其添加到web.config中,那就太棒了。
我同意Arne的观点,即添加会很棒。