У меня есть asp.net MVC 5 Web API приложение, где мне нужно, чтобы преобразовать SqlGeography
экземпляр в DbGeography
, например, для выполнения запросов с Entity Framework 6. Я использую следующий код, чтобы сделать это:Поддерживает ли EF 6 типы SQL Server 2014?
SqlGeography geo = SqlGeography.STGeomFromText(chars, Constants.SRID);
DbGeography dbGeo = DbSpatialServices.Default.GeographyFromProviderValue(geo);
Призыв к GeographyFromProviderValue
выдает следующее исключение:
Указанное значение поставщика несовместимо с реализацией этой пространственной службы. Требуется значение типа «Microsoft.SqlServer.Types.SqlGeography, Microsoft.SqlServer.Types, Version = 11.0.0.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91».
имя Параметр: providerValue
Конечно, мой SqlGeography
экземпляр поступает из SQL Server 2014 типов сборки (Microsoft.SqlServer.Types, Version 12.0.0.0
).
копания в исходный код Entity Framework показывает этот метод, чтобы быть преступником:
//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);
}
}
Как вы можете видеть, сборка типа для SQL Server 2014 не входит. Означает ли это, что Entity Framework 6 не поддерживает типы SQL Server 2014?
Очевидно, что я могу найти сборку типов для SQL Server 2012 и использовать ее вместо этого, но мне бы этого не хотелось. Есть ли другой путь вокруг этой проблемы?
Работал отлично. Спасибо! – Mansfield