ASP.NET vnext 和打开数据库

Posted

技术标签:

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

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

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

【问题讨论】:

为什么不能在 any 版本的 ASP.NET 中使用 mysql? 【参考方案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的完整应用示例。

【讨论】:

以上是关于ASP.NET vnext 和打开数据库的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Boilerplate v5升级到Abp vNext的改动

ASP.NET vNext EF7 dbContext 问题

ASP.NET 5 (vNext) - 获取配置设置

ASP.NET 5 (vNext) - 获取配置设置

ASP.NET 5 (vNext) 中的身份验证

ASP.NET vNext 可以使用非 vNext 引用吗?