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):

AutoHides: False Caption: Microsoft.SqlServer.Types Collection: {Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase, Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase, Microsoft.VisualStudio.Platform.WindowManagement.DTE.Window Base , Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase...} CommandBars : {Панель инструментов URL, Панель устранения неоднозначности F1} ContextAttributes : System.__ComObject DTE : System.__ComObject Document : HWnd : 6425562 Высота : 1671 IsFloating : False Вид : Tool Слева: 1674 Linkable
: False LinkedWindowFrame: Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase LinkedWindows: Object: System.__ComObject ObjectKind: {E8B06F52-6D01-11D2-AA7D-00C 04F990343} Project: ProjectItem: Selection: Top
: 283 Type: vsWindowTypeToolWindow Visible
: True Width: 1785 WindowState: vsWindowStateMaximize HasBeenDeleted: False Events
: Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowEvents VisibilityEvents: Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowVisibilityEvents Rect: 1674.0625,283.0208333333333,1785,1671 OutstandingEventCount: 0

Успешно установлен «Microsoft.SqlServer.Types 11.0.2» в пакет SO.Services.Data.Tests «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. Тесты ========== Завершено ==========

Я не вижу проблем с установкой пакета

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


person Chris Klepeis    schedule 27.04.2016    source источник


Ответы (1)


Если эти проблемы с установкой сохраняются, попробуйте удалить папку NuGet /packages и очистить ваш кеш NuGet, поэтому при следующей установке 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 ==========

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

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

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);

Выводит заполненную запись SqlGeography:

db.DropAndCreateTable<BusinessEntity>();

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

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

Добавление типа System Version=SQL Server 2012 в строку подключения помогло.

[
        {
                BusinessEntityId: 1,
                LatLong:
                {
                        IsNull: False,
                        STSrid: 4326,
                        Lat: 40.6898329,
                        Long: -74.0452177,
                        Z: Null,
                        M: Null,
                        HasZ: False,
                        HasM: False
                }
        }
]
person mythz    schedule 27.04.2016
comment
Попытка собрать информацию о зависимости для пакета «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 «Самое низкое» Разрешение действий для установки пакета «ServiceStack.OrmLite.SqlServer.Converters.4.0.56» Разрешенные действия для установки пакета «ServiceStack.OrmLite» .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» в «packages.config» Выполнение файла сценария «C:\Users\cklepeis\documents\visual studio 2015\Projects\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" + Информация о категории: 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:30 char:46 + $sqlLinkx86 = $folderx86.ProjectItems | где ‹‹‹‹ Name -eq "SqlServerSpatial110.dll" + 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:37 char:46 + $cppLinkx64 = $folderx64.ProjectItems | где ‹‹‹‹ Имя -eq "msvcr100.dll" + 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:44 char:46 + $sqlLinkx64 = $folderx64.ProjectItems | где ‹‹‹‹ Имя -eq "SqlServerSpatial110.dll" + Информация о категории: InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand - person Chris Klepeis; 27.04.2016