在我的数据库表布局中,有一列的类型是hierarchyid
(列index=4)。在尝试设置新环境(从XEN服务器创建的虚拟web服务器),然后运行站点时,我遇到了这个问题:
异常消息: DataReader.GetFieldType(4)返回null。异常数据: System.Collections.ListDictionaryInternal
我做了一些搜索,发现已经有一些关于它的主题(比如在MSDN上)。
但是,即使我添加了C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Types.dll
库,看起来structure SqlHierarchyId
中的db类型也无法识别。
"Exception at DataReader.GetFieldType(4) returned“仍被抛出。
注意:如果我在环境(Windows Server2008 RC2)上安装VS2010中的C#包,这个问题就会解决,但我的老板不接受,因为这只是一个简单的web服务器。
发布于 2011-08-04 13:25:41
从项目中引用Microsoft.SQLServer.Types dll,对于引用,请在引用的属性中将其设置为“复制本地”。这将在您部署时将该DLL与网站打包在一起。那么你不需要在你的web机器上安装所有的SQL Server来使用SQL Server数据类型。我为我的网站这样做是因为它使用了geography
数据类型的列,并且我得到了相同的错误。
发布于 2018-04-19 19:49:33
我试图通过将Microsoft.SqlServer.Types NuGet包添加到我的项目中来解决此问题,但仅此一项并不能解决问题。我还必须将以下内容添加到项目App.config的<assemblyBinding>
元素中:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
.
.
.
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>
.
.
.
</assemblyBinding>
</runtime>
发布于 2017-03-11 22:14:12
对我有效的解决方案是在连接字符串中添加“类型系统Version=SQL Server2012”。
示例: string connectionString = "Data Source=myserver;Initial Catalog=mydatabase;User ID=sa;Password=*******;类型System Version=SQL Server2012;“;
https://stackoverflow.com/questions/6569624
复制相似问题