C# .NET Core 3.1和SQL Server hierarchyid-多个异常
我在.NETCore3.1项目中使用SQLServerDB,一些存储过程和视图具有参数和数据的层次结构类型 我使用C# .NET Core 3.1和SQL Server hierarchyid-多个异常,c#,sql-server,.net-core,.net-core-3.1,C#,Sql Server,.net Core,.net Core 3.1,我在.NETCore3.1项目中使用SQLServerDB,一些存储过程和视图具有参数和数据的层次结构类型 我使用Microsoft.Data.SqlClient包。当我尝试使用SqlDataReader读取数据时,会出现异常: System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.SqlServer.Types,版本=10.0.0.0,区域性=中性,PublicKeyToken=89845DCD80CC91”。系统找不到指定的文件 好的,我试
Microsoft.Data.SqlClient
包。当我尝试使用SqlDataReader
读取数据时,会出现异常:
System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.SqlServer.Types,版本=10.0.0.0,区域性=中性,PublicKeyToken=89845DCD80CC91”。系统找不到指定的文件
好的,我试着按照它的建议使用Microsoft.SqlServer.Types,但是这个包不是.NET标准的,而且不起作用 此外,我还找到了EntityFrameworkCore.SqlServer.HierarchyId,但当我使用它时,我得到了: System.InvalidCastException:无法将类型为“Microsoft.SqlServer.Types.SqlHierarchyId”的对象强制转换为类型为“Microsoft.Data.SqlClient.Server.IBinarySerialize” 那么,在.NETCore3.1中究竟如何使用层次结构类型呢 我计划在linux上托管此解决方案 更新 我确实使用了与.NET Core兼容的Microsoft.Data.SqlClient2.0。另外,我添加了EntityFrameworkCore.SqlServer.HierarchyId,得到了以下错误: System.InvalidCastException:无法将类型为“Microsoft.SqlServer.Types.SqlHierarchyId”的对象强制转换为类型为“Microsoft.Data.SqlClient.Server.IBinarySerialize” 以下是.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EntityFrameworkCore.SqlServer.HierarchyId" Version="1.1.0" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="2.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
</ItemGroup>
<ItemGroup>
<Folder Include="Helpers\" />
</ItemGroup>
</Project>
您的错误消息表明您使用的是使用nuget的东西,即.NET Framework dll,而不是.NET Core 如果您提到您使用的是Microsoft.Data.SqlClient,请确保您使用的是与.NET Core兼容的
如果出现其他错误,请同时检查您的错误消息表明您使用的是使用nuget的.NET Framework dll,而不是.NET Core 如果您提到您使用的是Microsoft.Data.SqlClient,请确保您使用的是与.NET Core兼容的
如果出现其他错误,请同时检查解决方案,以便在所有查询中将hierarchyid转换为NVARCHAR:
... CAST(groupPath as NVARCHAR(4000)) as groupPath ...
然后将其用作字符串。目前的解决方案是在所有查询中将hierarchyid转换为NVARCHAR:
... CAST(groupPath as NVARCHAR(4000)) as groupPath ...
然后将其用作字符串。
Microsoft.SqlServer.Types,Version=10.0.0
。。。那不是SQLServer2008吗?SQL Server 2008。请使用示例代码更新问题并将其放置在发现此异常的位置。已添加代码。Microsoft.SqlServer.Types,Version=10.0.0
。。。那不是SQLServer2008吗?SQL Server 2008。请使用示例代码更新问题,并将其放置在发现此异常的位置。已添加代码。
... CAST(groupPath as NVARCHAR(4000)) as groupPath ...