ServiceStack OrmLite не получает поля SqlGeography

Я следую приведенным здесь инструкциям по использованию типов SqlGeography с ServiceStack OrmLite v. 4.0.56: https://github.com/ServiceStack/ServiceStack.OrmLite/wiki/SQL-Server-Types

SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
SqlServerConverters.Configure(SqlServer2012Dialect.Provider);

(не веб-приложение)

Вот мой класс DataModel:

[DataContract]
[Schema("dbo")]
public class BusinessEntity
{
    [DataMember, PrimaryKey, AutoIncrement]
    public Int16 BusinessEntityId { get; set; }
    ...
    [DataMember]
    public SqlGeography LatLong { get; set; }
}

Когда я получаю эти записи с помощью OrmLite, все значения LatLong равны нулю, но в базе данных есть данные:

Мои тесты просто извлекают все записи:

return Db.Select<DataModel.dbo.BusinessEntity>();

Похоже, что при установке пакета nuget произошла ошибка, однако ошибок времени выполнения нет (я постоянно получаю эту ошибку при установке пакета nuget):

Попытка собрать информацию о зависимостях для пакета 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56' относительно проекта 'Services\Web\SO.Services.Data.Tests', нацеливание на.NETFramework,Version=v4.6.1'Попытка разрешить зависимости для пакета 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56' с DependencyBehavior 'Lowest' Разрешение действий для установки пакета 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56' Решенные действия для установки пакета 'ServiceStaite.Om.SqlServer.Converters.4.0.56 'Пакет'Microsoft.SqlServer.Types.11.0.2'уже существует в папке'C:\Users\cklepeis\documents\visual studio 2015\Projects\SO\packages'Добавлен пакет'Microsoft.SqlServer.Types.11.0.2' to 'packages.config'Файл исполняемого скрипта' C: \ Users \ cklepeis \ Documents \ visual studio 2015 \ Проекты \SO\packages\Microsoft.SqlServer.Types.11.0.2\tools\install.ps1'... Where-Object: Невозможно связать параметр'FilterScript'. Невозможно преобразовать значение "Имя" типа "System.String" в тип "S ystem.Management.Automation.ScriptBlock". В C:\Users\cklepeis\documents\visual studio 2015\Projects\SO\packages\Microsoft.SqlServer.Types.11.0.2\tools\install.p s1:11 char:50 + $folderx86 = $sqlServerTypes.ProjectItems | где<<<< Имя -eq "x86" + CategoryInfo: InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand Where-Object: невозможно связать параметр 'FilterScript'. Невозможно преобразовать значение "Имя" типа "System.String" в тип "S ystem.Management.Automation.ScriptBlock". В C: \ Users \ cklepeis \ Documents\visual studio 2015\Projects\SO\packages\Microsoft.SqlServer.Types.11.0.2\tools\install.p s1:17 char:50 + $folderx64 = $sqlServerTypes.ProjectItems | где <<<< Имя -eq "x64" + CategoryInfo: InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand Where-Object: невозможно связать параметр 'FilterScript'. Невозможно преобразовать значение "Имя" типа "System.String" в тип "S ystem.Management.Automation.ScriptBlock". В C: \ Users \ cklepeis \ Documents\visual studio 2015\Projects\SO\packages\Microsoft.SqlServer.Types.11.0.2\tools\install.p s1:23 char:46 + $cppLinkx86 = $folderx86.ProjectItems | где <<<< Имя -eq "msvcr100.dll" + CategoryInfo: InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand Параметр Where-Object: CanScript Filter не может связать, Невозможно преобразовать значение "Имя" типа "System.String" в тип "S ystem.Management.Automation.ScriptBlock". В C: \ Users \ cklepeis \ Documents\visual studio 2015\Projects\SO\packages\Microsoft.SqlServer.Types.11.0.2\tools\install.p s1:30 char:46 + $sqlLinkx86 = $folderx86.ProjectItems | где <<<< Имя -eq "SqlServerSpatial110.dll" + CategoryInfo: InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand b Параметр Where-Object: Объект-объекта, Невозможно преобразовать значение "Имя" типа "System.String" в тип "S ystem.Management.Automation.ScriptBlock". В C: \ Users \ cklepeis \ Documents\visual studio 2015\Projects\SO\packages\Microsoft.SqlServer.Types.11.0.2\tools\install.p s1:37 char:46 + $cppLinkx64 = $folderx64.ProjectItems | где <<<< Имя -eq "msvcr100.dll" + CategoryInfo: InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand Параметр Where-Object: CanScript Filter не может связать, Невозможно преобразовать значение "Имя" типа "System.String" в тип "S ystem.Management.Automation.ScriptBlock". В C: \ Users \ cklepeis \ Documents\visual studio 2015\Projects\SO\packages\Microsoft.SqlServer.Types.11.0.2\tools\install.p s1:44 char:46 + $sqlLinkx64 = $folderx64.ProjectItems | где <<<< Имя -eq "SqlServerSpatial110.dll" + CategoryInfo: InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand

AutoHides: False Caption: Microsoft.SqlServer.Types Collection: {Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase, Microsoft.VisualStudio.Platfo rm.WindowManagement.DTE.WindowBase, Microsoft.VisualStudio.Platform.WindowManagement.D, Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase...} Панели команд: {Панель инструментов URL, Панель инструментов устранения неоднозначности F1} ContextAttributes: System.__ComObject DTE: Система.__ Документ ComObject: HWnd: 6425562 Высота: 1671 IsFloating: False Kind: Инструмент Слева: 1674 Ссылка
: False LinkedWindowFrame: Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase LinkedWindows: Object: System.__ComObject ObjectKind: {E8B06F52-6D01-11D2-AA7D-00C04F990343} Проект: ProjectItem: Выбор: Вверх
: 283 Тип: vsWindowTypeToolWindow Visible
: True Width: 1785 WindowState: vsWindowStateMaximize HasBeenDeleted: Ложные события
: Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowEvents VisibilityEvents: Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowVisibilityEvents Rect: 1674.0625,283.020833333333,1785,1671 OutstandingEventCount: 0

Успешно установленный Microsoft.SqlServer.Types 11.0.2 в SO.Services.Data.Tests Package "ServiceStack.OrmLite.SqlServer.Converters.4.0.56" уже существует в папке "C: \ Users \ cklepeis \ documents \ visual studio". 2015 \ Projects \ SO \ packages 'Добавлен пакет' ServiceStack.OrmLite.SqlServer.Converters.4.0.56 'в' packages.config '. Успешно установлен'ServiceStack.OrmLite.SqlServer.Converters 4.0.56'в SO.Services.Data. Тесты ========== Закончено ==========

1 ответ

Решение

Я не вижу проблем с установкой ServiceStack.OrmLite.SqlServer.Converters Пакет NuGet:

Attempting to gather dependencies information for package 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56' with respect to project 'ConsoleApplication4', targeting '.NETFramework,Version=v4.5'
Attempting to resolve dependencies for package 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56' with DependencyBehavior 'Lowest'
Resolving actions to install package 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56'
Resolved actions to install package 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56'
Adding package 'Microsoft.SqlServer.Types.11.0.2' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'Microsoft.SqlServer.Types.11.0.2' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'Microsoft.SqlServer.Types.11.0.2' to 'packages.config'
Executing script file 'C:\src\wip\ConsoleApplication4\packages\Microsoft.SqlServer.Types.11.0.2\tools\install.ps1'...


AutoHides             : False
Caption               : Microsoft.SqlServer.Types
Collection            : {Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase, 
                        Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase, 
                        Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase, 
                        Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase...}
CommandBars           : {URL Toolbar, F1 Disambiguation Toolbar}
ContextAttributes     : System.__ComObject
DTE                   : System.__ComObject
Document              : 
HWnd                  : 32967448
Height                : 1060
IsFloating            : False
Kind                  : Tool
Left                  : 74
Linkable              : False
LinkedWindowFrame     : Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase
LinkedWindows         : 
Object                : System.__ComObject
ObjectKind            : {E8B06F52-6D01-11D2-AA7D-00C04F990343}
Project               : 
ProjectItem           : 
Selection             : 
Top                   : 254
Type                  : vsWindowTypeToolWindow
Visible               : True
Width                 : 2357
WindowState           : vsWindowStateMaximize
HasBeenDeleted        : False
Events                : Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowEvents
VisibilityEvents      : Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowVisibilityEvents
Rect                  : 73.5,253.5,2357,1060
OutstandingEventCount : 0



Successfully installed 'Microsoft.SqlServer.Types 11.0.2' to ConsoleApplication4
Adding package 'ServiceStack.Interfaces.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.Interfaces.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.Interfaces.4.0.56' to 'packages.config'
Successfully installed 'ServiceStack.Interfaces 4.0.56' to ConsoleApplication4
Adding package 'ServiceStack.Text.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.Text.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.Text.4.0.56' to 'packages.config'
Successfully installed 'ServiceStack.Text 4.0.56' to ConsoleApplication4
Adding package 'ServiceStack.Common.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.Common.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.Common.4.0.56' to 'packages.config'
Successfully installed 'ServiceStack.Common 4.0.56' to ConsoleApplication4
Adding package 'ServiceStack.OrmLite.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.OrmLite.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.OrmLite.4.0.56' to 'packages.config'
Successfully installed 'ServiceStack.OrmLite 4.0.56' to ConsoleApplication4
Adding package 'ServiceStack.OrmLite.SqlServer.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.OrmLite.SqlServer.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.OrmLite.SqlServer.4.0.56' to 'packages.config'
Successfully installed 'ServiceStack.OrmLite.SqlServer 4.0.56' to ConsoleApplication4
Adding package 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56' to folder 'C:\src\wip\ConsoleApplication4\packages'
Added package 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56' to 'packages.config'
Successfully installed 'ServiceStack.OrmLite.SqlServer.Converters 4.0.56' to ConsoleApplication4
========== Finished ==========

Если проблемы с установкой не устранены, попробуйте удалить NuGet. /packages папку и очистить кеш NuGet, чтобы в следующий раз вы установили ServiceStack.OrmLite.SqlServer.Converters он снова загрузит все пакеты из NuGet.

Для использования определенных типов SQL Server вам необходимо использовать SqlServer2012Dialect.Provider а также укажите, что вы используете SQL Server 2012 в строке подключения, например:

SqlServerConverters.Configure(SqlServer2012Dialect.Provider);

var dbFactory = new OrmLiteConnectionFactory(
    "Server=localhost;Database=test;User Id=test;Password=test;Type System Version=SQL Server 2012",
    SqlServer2012Dialect.Provider);

Затем вы сможете использовать определенные типы SQL Server как обычно, например, этот пример:

db.DropAndCreateTable<BusinessEntity>();

db.Insert(new BusinessEntity
{
    BusinessEntityId = 1,
    LatLong = SqlGeography.Point(40.6898329, -74.0452177, 4326)
});

db.Select<BusinessEntity>().PrintDump();

Распечатывает населенный пункт SqlGeography запись:

[
        {
                BusinessEntityId: 1,
                LatLong:
                {
                        IsNull: False,
                        STSrid: 4326,
                        Lat: 40.6898329,
                        Long: -74.0452177,
                        Z: Null,
                        M: Null,
                        HasZ: False,
                        HasM: False
                }
        }
]
Другие вопросы по тегам