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
}
}
]