【问题标题】:Using Entity Framework on Ubuntu 16.04在 Ubuntu 16.04 上使用实体框架
【发布时间】:2017-09-10 23:12:44
【问题描述】:

我已经成功创建了一个托管在 Ubuntu Linux 服务器上的 asp.net core mvc 应用程序。网站运行正常。

今天我将实体框架添加到我的项目中。我可以将数据发布到我的数据库并在我的 Windows 机器上检索它,这样就可以了。

当我将我的项目移动到我的 Ubuntu 机器上时,网站可以正常工作,但是当我尝试访问需要我的数据库的页面时,我会收到以下错误:

PlatformNotSupportedException: LocalDB is not supported on this Platform.
System.Data.SqlClient.SNI.LocalDB.GetLocalDBConnectionString(string localDbInstance)

我的 Ubuntu 机器上是否缺少 Entity Framework/SQL_Server 包,还是有其他原因?

【问题讨论】:

  • 您将使用 Linux,因此请使用这些操作系统原生的 MySql 或 MariaDB,它适用于 EF7 和 .net Core

标签: c# asp.net entity-framework ubuntu


【解决方案1】:

看看报错信息:

PlatformNotSupportedException:此平台不支持 LocalDB

也就是说,Linux 不支持 LocalDB。

另见 github 上的this issue

正如@ErikEJ 所说,LocalDB 仅适用于 Windows。在 Linux 上,您可以将 EF Core 与远程 SQL Server(在 Windows 上运行)、https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-overview 的预览版或SQL Azure 一起使用。或者,您可以使用 Postgres 和 SQLite 提供程序。

总而言之,您需要另一个数据库。

【讨论】:

    【解决方案2】:

    您不能在 Ubuntu 上使用来自 Visual Studio 的本地 DB 文件,因为错误说它不受支持,但您可以使用 sql server 2017 作为数据库引擎,它现在支持 linux 或 Ubuntu 上任何受支持的 DBMS

    您可以使用此链接在 linux 中安装 sql server 2017 Installation guidance

    【讨论】:

    • 这将是一个很好的解决方案,但是 sql server 2017 需要 3.5gb RAM 才能安装。不幸的是,我没有那么多内存。
    • 我能够通过使用 SQLite 并创建一个本地 .db 文件来解决这个问题。有关一些有用的资源,请参阅 jeninja.net/Links
    猜你喜欢
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    相关资源
    最近更新 更多