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 框架,在 linux 上是单声道)。 NHibernate 在单声道上运行良好,因此您最终可以在 APS.NET 5 vNext 应用程序中使用 mysql、postgresql 和其他数据库。这是NHibernate and PostgreSQL on Ubuntu server的完整应用示例。
【讨论】:
以上是关于ASP.NET vnext 和打开数据库的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Boilerplate v5升级到Abp vNext的改动