• EF连接Sqlserver2014,使用DBGeography时提示无法加载sqlserverspatial.dll


    (1)确认你要使用的SqlServer版本,如果是2014,就要在nuget中添加microsoft.sqlserver.types.dll,使用12.0.4100.1这个版本,它会自动添加sqlservertypes文件夹到项目中,并自动添加一个Loader类,在Loader类中修改以下代码,指定让sqlserver使用sqlserver2014的版本使用sqlserver spatial:

    public static void LoadNativeAssemblies(string rootApplicationPath)
    {
    var nativeBinaryPath = IntPtr.Size > 4
    ? Path.Combine(rootApplicationPath, @"SqlServerTypesx64")
    : Path.Combine(rootApplicationPath, @"SqlServerTypesx86");

    LoadNativeAssembly(nativeBinaryPath, "msvcr100.dll");
    LoadNativeAssembly(nativeBinaryPath, "SqlServerSpatial120.dll");

    }

    sqlserverSpatial120.dll代表使用Sqlserver2014的sqlserverspatial功能,因为sqlserver是硬编码使用sqlserverspatial10或11的空间数据库功能,如果不指定版本,它默认去找sqlserverspatial10或11。

    (2)在工程中,将sqlserverTypes文件夹中的SqlServerSpatial120.dll设置属性,“复制到输出目录”:始终复制。

    (3)有以上设置后,开发时,可以正常使用dbGeography功能,但在部署时,还会提示无法找到sqlserverspatial10.dll,解决办法就是在配置文件中指定sqlserver Type的版本,在<runtime>配置节,添加以下属性设置:

    <dependentAssembly>
    <!--指定sqlserverType的版本-->
    <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
    <bindingRedirect oldVersion="10.0.0.0" newVersion="12.0.0.0" />
    </dependentAssembly>

    提示:12.0.0代表sqlserver2014。

    经过以上设置,开发和部署时,使用spatial功能时,就全解决了。

  • 相关阅读:
    jQuery 遍历函数 ,javascript中的each遍历
    定时器:右下角滑动信息通知
    nopad++将制表符替换为换行符
    使用git提交远程仓库
    (转)解决windows解决windows 7 部分程序图标显示不正常的问题
    设置gvim的字体大小
    mysql乱码
    (转)notepad++去重
    查看linux硬件的信息
    虚拟机安装centos6.5出现Error processing drive:pci-0000:00:10-scsi-0:0:0:0问题
  • 原文地址:https://www.cnblogs.com/SimpleGIS/p/6955915.html
Copyright © 2020-2023  润新知