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.

Другие вопросы по тегам