Tôi có một asp.net MVC 5 web ứng dụng api nơi tôi cần phải chuyển đổi một trường hợp SqlGeography
vào một trường hợp DbGeography
cho truy vấn với Entity Framework 6. Tôi đang sử dụng đoạn mã sau để làm như vậy:EF 6 có hỗ trợ các loại SQL Server 2014 không?
SqlGeography geo = SqlGeography.STGeomFromText(chars, Constants.SRID);
DbGeography dbGeo = DbSpatialServices.Default.GeographyFromProviderValue(geo);
Cuộc gọi đến GeographyFromProviderValue
ném ngoại lệ sau:
Giá trị nhà cung cấp được chỉ định không tương thích với việc triển khai dịch vụ không gian này. Giá trị là bắt buộc của loại 'Microsoft.SqlServer.Types.SqlGeography, Microsoft.SqlServer.Types, Phiên bản = 11.0.0.0, Văn hóa = trung lập, PublicKeyToken = 89845dcd8080cc91'.
tên Parameter: providerValue
đủ chắc, SqlGeography
dụ của tôi là đến từ SQL Server 2014 loại lắp ráp (Microsoft.SqlServer.Types, Version 12.0.0.0
).
Đào vào mã nguồn Entity Framework cho thấy phương pháp này là thủ phạm:
//EntityFramework.SqlServer.dll(6.0.0.0) System.Data.Entity.SqlServer.SqlTypesAssemblyLoader
public SqlTypesAssemblyLoader(IEnumerable<string> assemblyNames = null)
{
this._preferredSqlTypesAssemblies = (assemblyNames ?? ((IEnumerable<string>)new string[]
{
"Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91",
"Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
}));
this._latestVersion = new Lazy<SqlTypesAssembly>(new Func<SqlTypesAssembly>(this.BindToLatest), true);
}
}
Như bạn có thể thấy, lắp ráp các loại cho SQL Server 2014 không được bao gồm. Điều này có nghĩa là Entity Framework 6 không hỗ trợ các loại từ SQL Server 2014?
Rõ ràng tôi có thể tìm thấy các loại lắp ráp cho SQL Server 2012 và sử dụng thay vào đó, nhưng tôi không muốn phải. Có cách nào khác xung quanh vấn đề này không?
Đã làm việc tuyệt vời. Cảm ơn bạn! – Mansfield