Microsoft.SqlServer.Types несовместим с.NET Standard
Я пытаюсь преобразовать все наши библиотеки классов C# из.NET Framework в проекты.NET Standard, так как мы начинаем использовать.NET Core, поэтому они должны использоваться как приложениями.NET Core, так и.NET Framework (с последний будет перенесен в Core в ближайшие месяцы.)
У меня проблемы с преобразованием кода уровня доступа к данным, потому что мы широко используем Microsoft.SqlServer.Types, а официальный пакет nuget не поддерживает.NET Standard. Я попробовал неофициальный пакет nuget от dotmorten, но в нем не хватает функциональности. Ниже приведен список всего недостающего, что нам понадобится (собранный вместе, чтобы получить сборку кода...)
public static class SqlMockExtensions
{
public static SqlBytes STAsBinary(this SqlGeography geography) => throw new NotImplementedException();
public static SqlGeography MakeValid(this SqlGeography geography) => throw new NotImplementedException();
public static int STDimension(this SqlGeography geography) => throw new NotImplementedException();
public static bool STIsValid(this SqlGeography geography) => throw new NotImplementedException();
public static Nullable<double> EnvelopeAngle(this SqlGeography geography) => throw new NotImplementedException();
public static SqlGeography ReorientObject(this SqlGeography geography) => throw new NotImplementedException();
public static SqlGeography BufferWithTolerance(this SqlGeography geography, double arg1, int arg2, bool arg3) => throw new NotImplementedException();
public static SqlGeography Reduce(this SqlGeography geography, double tolerance) => throw new NotImplementedException();
public static SqlGeography EnvelopeCenter(this SqlGeography geography) => throw new NotImplementedException();
public static double STDistance(this SqlGeography geography, SqlGeography point2) => throw new NotImplementedException();
public static SqlBytes STAsBinary(this SqlGeometry geometry) => throw new NotImplementedException();
}
Когда я ищу в SO других, пытающихся интегрировать Microsoft.SqlServer.Types в свои проекты.NET Core и Standard, я вижу упоминание о включении официального пакета nuget, а затем что-то вроде этого:
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
Однако при попытке добавить пакет nuget, не совместимый со стандартом.NET, в проект.NET Standard возникает ошибка, поэтому мне не ясно, как это решение.
Похоже, что это очень распространенная проблема: должно быть много разработчиков, которые используют Microsoft.SqlServer.Types для SqlGeography, SqlGeometry и т. Д. И переносятся на.NET Standard. Так как же вы все это делаете?
1 ответ
Как бы то ни было, ответа не нашли.
В итоге мы перешли на EF Core.