【问题标题】:Entity Framework Migration With Spatial Data使用空间数据进行实体框架迁移
【发布时间】:2017-08-18 15:36:30
【问题描述】:

我正在尝试执行代码优先的“添加迁移”,但出现错误:

空间类型和函数不适用于此提供程序,因为找不到程序集 'Microsoft.SqlServer.Types' 版本 10 或更高版本。

我了解如何在正在运行的应用程序中加载空间 DLL,但是从包管理器运行迁移时我该怎么做?

编辑:好吧,这比我想象的还要糟糕。由于同样的错误,这个简单的控制台应用程序将无法运行。我从 NuGet 安装了 Microsoft.SqlServer.Types。怎么回事?

static void Main(string[] args)
        {
            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
            System.Data.Entity.Spatial.DbGeography location = System.Data.Entity.Spatial.DbGeography.PointFromText("POINT(" + 10 + " " + 10 + ")", 4326);
        }

例外:空间类型和函数不适用于此提供程序,因为找不到程序集 'Microsoft.SqlServer.Types' 版本 10 或更高版本。

【问题讨论】:

    标签: c# entity-framework spatial


    【解决方案1】:

    好的,我搞定了。我的环境出了点问题。我卸载了与我的系统相关的所有“SQL 服务器”,安装了 VS 2017,安装了“Microsoft® SQL Server® 2012 的系统 CLR 类型”并且错误消失了。

    不确定是什么解决了它,但如果您遇到同样的问题,请尝试卸载所有“Microsoft® SQL Server 的 CLR 类型”并尝试安装最新版本。

    【讨论】:

    • 就我而言,我安装了 64 位版本的 CLR 类型,因为 SQL Server 2012 是 64 位,但它不起作用。然后我安装了 32 位版本,考虑到 Visual Studio 是 32 位的。仍然没有工作。卸载了这两个版本并再次安装了 32 位版本,它终于工作了。
    【解决方案2】:

    尝试从包管理器控制台安装Microsoft.SqlServer.Types

    PM> Install-Package Microsoft.SqlServer.Types
    

    【讨论】:

    • 已经做了,但没有帮助。添加此包时,它会告诉您在运行时使用提供的例程加载空间 DLL。不确定在运行 add-migration 时如何做同样的事情?
    猜你喜欢
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 2014-07-08
    • 2012-03-17
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多