【问题标题】:ASP.NET vnext and open databaseASP.NET vnext 和打开数据库
【发布时间】:2014-08-03 21:15:09
【问题描述】:

是否有可能使用开放数据库,如 mysql、mariadb 或其他以及 ASP.NET vNext?

也许是测试版驱动程序或类似的东西?

【问题讨论】:

  • 为什么不能在 any 版本的 ASP.NET 中使用 mysql?

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


【解决方案1】:

对于 ASP.NET vNext,您可以选择以完整的 .NET Framework 或精简、可二进制部署、跨平台的 Core 框架为目标。

如果您以完整的 .NET Framework 为目标,那么您将获得以前拥有的所有数据访问选项。如果您以 CoreCLR 为目标,则可以使用新版本的实体框架 (EF7)。目前我们在 CoreCLR 上有以下提供程序; SQL Server、SQLite 和用于测试的内存提供程序。当然,随着我们朝着 RTM 的方向努力,将会有更多的提供商可用。

除了 EF7,还有 EF 在其之上构建的相应提供程序特定的 SDK,这些也可以在应用程序代码中使用(例如,有一个 SqlClient 的实现,可用于访问 SQL服务器数据库)。

您可以在此处阅读有关我们的 EF7 计划的更多信息 - http://blogs.msdn.com/b/adonet/archive/2014/05/19/ef7-new-platforms-new-data-stores.aspx

【讨论】:

    【解决方案2】:

    这取决于您使用的是 CoreCLR(精简版)还是桌面配置文件。在桌面配置文件中,您可以使用 .NET 中的所有内容,并且可以添加自己的开源库(通过 Nuget)。

    只需打开您的 project.json 并添加所需的依赖项。

    无论如何,您不应该处理低级 ADO.NET,您可以使用 Entity Framework、Massive 或 nHibernate 或其他任何东西来抽象出您的项目现在使用的特定数据库,因为它必然会改变或成倍增加在项目生命周期内...

    【讨论】:

    • 嘿,谢谢您的精彩评论。但我想稍后在 linux 机器上使用 CoreCLR 发布代码。
    • @Monoman 好吧,无论如何我是一个新手,如何在 vnext mvc 中使用实体框架,我发现添加新项目没有选项,并且有任何方法可以使用 odata。
    【解决方案3】:

    您应该仍然可以使用与 ASP.Net vNext 相关的任何 ADO.Net - 毕竟,它仍然是 .Net!

    【讨论】:

    • 嗯,可以用Ado(Sqlcommand)等标准类与mysql服务器对话吗?
    • 如果您添加 MySQL ADO.Net 驱动程序,当然可以!
    • 但是它们以后不会在 linux 机器上运行,对吧? :-)
    • 他们为什么不呢? mono-project.com/Database_Access 指向一个 MySQL ADO.Net 适配器,它将在所有 CLR 平台下作为其完全托管的方式工作。
    • 据我所知,CoreCLR 不支持 ADO.Net(仅 System.Data.Common),因此您将无法使用任何 mysql 提供程序或PostgreSQL。这在未来会改变吗?
    【解决方案4】:

    是的,这是可能的,但前提是您使用完整的 .net 配置文件(在 Windows 上它将是 .net 框架,在 l​​inux 上是单声道)。 NHibernate 在单声道上运行良好,因此您最终可以在 APS.NET 5 vNext 应用程序中使用 mysql、postgresql 和其他数据库。这是NHibernate and PostgreSQL on Ubuntu server的完整应用示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      • 2015-06-26
      • 2015-09-14
      • 2015-09-30
      相关资源
      最近更新 更多