【问题标题】:ASP.NET 5 / MVC 6 with MySQL database带有 MySQL 数据库的 ASP.NET 5 / MVC 6
【发布时间】:2015-04-03 23:45:51
【问题描述】:

我计划构建一个将托管在 Linux 上的 MVC 6 网站,我目前处于初始测试阶段,以了解新的 ASP.NET 5 (vNext) 和 MVC 6 的工作方式以及我是否可以部署所有内容在 Linux 上。

我的网站必须使用数据库,因为它将部署在 Linux 上,显然我不能使用 SQL Server。我非常想使用 MySQL,但也许还有其他选择?假设现在我需要 MySQL,除非不可能。

我意识到这一切仍处于测试阶段,尚未准备好投入生产,但我只是希望进行初始设置,以确保在我开始在实际网站上工作之前一切正常。如果没有数据库连接,我不能这样做...

我很快发现,对于 MVC 6 使用的 Entity Framework 7,还没有 MySQL 连接器。这是否意味着我运气不好,必须等到支持 EF7 的新 MySQL 连接器出现?或者我可以在支持 MySQL 的 MVC 6 网站中恢复到 EF6 吗?我尝试向 EF6 添加依赖项,但默认 MVC 6 模板中有太多依赖项,以至于所有引用 EF7 我完全迷失了,不知道如何解决这个问题,如果它甚至可能的话。

总结一下:

  • 我可以在 MySQL 中使用 EF 7,还是必须等到新的 MySQL 连接器支持它?
  • 我可以回退到 EF6 并仍然使用 MVC 6 并在 Linux 上部署(使用 Mono)吗?如果是这样,我该如何设置?
  • 如果一切都失败了 - 我可以在 Linux/Mono 上将不同的数据库与 MVC 6 一起使用吗?

【问题讨论】:

  • 你在说什么?我不了解 PHP,该网站将成为现有 ASP.NET 4 应用程序的“端口”(更像是重写)。

标签: mysql mysql-connector asp.net-core entity-framework-core


【解决方案1】:

我知道您有 2 个解决方案。 SQLite 和 Postgres。不幸的是,它们都不适用于今天的生产应用程序。这两个项目都在积极开发中。 SQL Server 仍然是 EF 7 中最受支持的数据库。这应该可以在 Mono 中使用,但不幸的是需要您使用 Windows Server(或 SQL Azure)。

SQLite

不适合服务器,但仍然有效: EntityFramework.Sqlite 正在为 EF 7 开发。You can get beta1 from Nuget.org. 这应该适用于 Mono。

PostgreSQL

肯定是预发布,但正在构建中: 此外,Postgres (npgsql) 正在 EF7 提供程序上进行开发。 Their code is onGitHub,您可以从他们的 MyGet 提要中获取预发布包(将 https://www.myget.org/F/npgsql-unstable 添加到您的 Nuget 源。)

【讨论】:

    【解决方案2】:

    我可以在 MySQL 中使用 EF 7,还是必须等到新的 MySQL 连接器支持它?

    目前没有支持 MySQL 的 EF7 模块,这表示我相信团队会感兴趣,为社区驱动的努力创建一个为 EF 构建模块的拉取请求。现在还为时尚早,谁知道会发生什么。

    我可以回退到 EF6 并仍然使用 MVC 6 并在 Linux 上部署(使用 Mono)吗?如果是这样,我该如何设置?

    您应该可以,但您将无法使用 CoreCLR,但我的理解是您仍然可以在 Mono 上使用它。现在我注意到一些事情(我认为是 Jabbr 或博客,不确定)一旦 CoreCLR 100% 支持 linux 和 Mac,这将是运行 ASP.NET 应用程序的唯一方法,但我再次不确定这个。

    如果一切都失败了 - 我可以在 Linux/Mono 上将不同的数据库与 MVC 6 一起使用吗?

    目前除了 EF7 之外,没有任何东西支持 CoreCLR,但我相信随着我们的发展,您会看到针对 MySQL、Mongo、Raven 等的 coreclr 重新编译的 C# 库。

    【讨论】:

      【解决方案3】:

      我正在尝试在 2015 年 12 月 30 日更新此问题,因为自问题发布以来 ASP.NET 5 领域已经发展了很多。在当时或这篇文章中,我们处于最终版本更新 1 (1.0.0-rc1-final-update1) 中。

      这是一个 sqlite 选项:http://damienbod.com/2015/08/30/asp-net-5-with-sqlite-and-entity-framework-7/ 使用 EF7 和 SQLite。不确定这是否适用于 Linux...

      "EntityFramework.Commands": "7.0.0-rc1-final", "EntityFramework.SQLite": "7.0.0-rc1-final"

      另一个选择是使用 EF6 和 ASP.NET 5 和 MVC 6,阅读这篇文章:http://dan.cx/2015/08/entity-framework-6-mysql-aspnet。这是 Linux 准备好的。

      我鼓励人们继续更新这个问题,因为社区和微软仍在为 ASP.NET 5 MVC 6 应用程序开发基于 Linux 的解决方案。

      【讨论】:

        【解决方案4】:

        SQLite 选项适用于 Linux 和 OS X。 (dnxcore 支持)

        http://damienbod.com/2016/01/07/experiments-with-entity-framework-7-and-asp-net-5-mvc-6/

        http://damienbod.com/2015/08/30/asp-net-5-with-sqlite-and-entity-framework-7/

        EF6 解决方案不是,只能在 .NET 上运行。

        EF7 和 ASP.NET 5 应该会在 2016 年第一季度/第二季度投入生产,不确定,日期尚未确定。

        PostgreSQL 看起来是解决您问题的好方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多