【问题标题】:ServiceStack OrmLite Not Retrieving SqlGeography FieldsServiceStack OrmLite 不检索 SqlGeography 字段
【发布时间】:2016-04-27 13:45:54
【问题描述】:

我已按照此处的说明将 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“最低”解决安装包的操作 '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”类型的“Name”值输入“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 字符:50 + $folderx86 = $sqlServerTypes.ProjectItems |其中

自动隐藏:错误标题: Microsoft.SqlServer.Types 集合: {Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase, Microsoft.VisualStudio.Platfo rm.WindowManagement.DTE.WindowBase、Microsoft.VisualStudio.Platform.WindowManagement.DTE.Window 基础,Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase...} CommandBars : {URL Toolbar, F1 Disambiguation Toolbar} 上下文属性: System.__ComObject DTE: System.__ComObject 文档:HWnd: 6425562 高度:1671 IsFloating:假 种类:工具左侧:1674 可链接
: 假 LinkedWindowFrame : Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowBase LinkedWindows:对象:System.__ComObject 对象种类:{E8B06F52-6D01-11D2-AA7D-00C04F990343} 项目 : ProjectItem : 选择 : 顶部
: 283 类型 : vsWindowTypeToolWindow 可见
:真实宽度:1785 WindowState: vsWindowStateMaximize HasBeenDeleted : 错误事件
:Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowEvents 可见性事件: Microsoft.VisualStudio.Platform.WindowManagement.DTE.WindowVisibilityEvents 矩形:1674.0625,283.020833333333,1785,1671 杰出事件计数: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.Tests ==========完成==========

【问题讨论】:

    标签: sql-server servicestack ormlite-servicestack sqlgeography


    【解决方案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 文件夹和 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
                    }
            }
    ]
    

    【讨论】:

    • 将“Type System Version=SQL Server 2012”添加到连接字符串就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多