sql-server - ServiceStack OrmLite 未检索 SqlGeography 字段

标签 sql-server servicestack ormlite-servicestack 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均为空,但数据库中有数据:

enter image description here

我的测试只是检索所有记录:

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

看起来安装 nuget 包时出现错误,但是,没有运行时错误(我在安装 nuget 包时一直收到此错误):

Attempting to gather dependency information for package 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56' with respect to project 'Services\Web\SO.Services.Data.Tests', targeting '.NETFramework,Version=v4.6.1' 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' Package 'Microsoft.SqlServer.Types.11.0.2' already exists in folder 'C:\Users\cklepeis\documents\visual studio 2015\Projects\SO\packages' Added package 'Microsoft.SqlServer.Types.11.0.2' to 'packages.config' Executing script file 'C:\Users\cklepeis\documents\visual studio 2015\Projects\SO\packages\Microsoft.SqlServer.Types.11.0.2\tools\install.ps1'... Where-Object : Cannot bind parameter 'FilterScript'. Cannot convert the "Name" value of type "System.String" to type "S ystem.Management.Automation.ScriptBlock". At 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 | where <<<< Name -eq "x86" + CategoryInfo : InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand Where-Object : Cannot bind parameter 'FilterScript'. Cannot convert the "Name" value of type "System.String" to type "S ystem.Management.Automation.ScriptBlock". At 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 | where <<<< Name -eq "x64" + CategoryInfo : InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand Where-Object : Cannot bind parameter 'FilterScript'. Cannot convert the "Name" value of type "System.String" to type "S ystem.Management.Automation.ScriptBlock". At 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 | where <<<< Name -eq "msvcr100.dll" + CategoryInfo : InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand Where-Object : Cannot bind parameter 'FilterScript'. Cannot convert the "Name" value of type "System.String" to type "S ystem.Management.Automation.ScriptBlock". At 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 | where <<<< Name -eq "SqlServerSpatial110.dll" + CategoryInfo : InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand Where-Object : Cannot bind parameter 'FilterScript'. Cannot convert the "Name" value of type "System.String" to type "S ystem.Management.Automation.ScriptBlock". At 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 | where <<<< Name -eq "msvcr100.dll" + CategoryInfo : InvalidArgument: (:) [Where-Object], ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand Where-Object : Cannot bind parameter 'FilterScript'. Cannot convert the "Name" value of type "System.String" to type "S ystem.Management.Automation.ScriptBlock". At 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 | where <<<< Name -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.DTE.Window Base, Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase...} CommandBars : {URL Toolbar, F1 Disambiguation Toolbar} ContextAttributes : System.__ComObject DTE : System.__ComObject Document : HWnd : 6425562 Height : 1671 IsFloating : False Kind : Tool Left : 1674 Linkable
: False LinkedWindowFrame : Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase LinkedWindows : Object : System.__ComObject ObjectKind : {E8B06F52-6D01-11D2-AA7D-00C04F990343} 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.020833333333,1785,1671 OutstandingEventCount : 0

Successfully installed 'Microsoft.SqlServer.Types 11.0.2' to SO.Services.Data.Tests Package 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56' already exists in folder 'C:\Users\cklepeis\documents\visual studio 2015\Projects\SO\packages' Added package 'ServiceStack.OrmLite.SqlServer.Converters.4.0.56' to 'packages.config' Successfully installed 'ServiceStack.OrmLite.SqlServer.Converters 4.0.56' to SO.Services.Data.Tests ========== Finished ==========

最佳答案

我在安装 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 文件夹和 clearing your NuGet cache因此,下次安装 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
                }
        }
]

关于sql-server - ServiceStack OrmLite 未检索 SqlGeography 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36891706/

相关文章:

c# - ORMLite 下的 SQLite 不允许在事务完成后执行任何操作

mysql - ServiceStack.OrmLite : Implementing custom StringConverter affects column type of complex BLOB fields

sql-server - 替代 ROW_NUMBER() 来获取行位置?

servicestack - 是否有 ServiceStacks 元数据页面的 Razor 模板

sql-server - 查找文件夹安装的 sql 版本(!)?

servicestack - SS OrmLite : Ambiguous column name when joining and filtering on the column name

c# - ServiceStack 3.9.71 中缺少类型

servicestack ormlite部分更新

c# - 无需点击按钮即可发布

sql-server - SQL Server 2005 复制