如何在 ASP.NET 5 中将 Entity Framework 6 与 MySQL 一起使用?
Posted
技术标签:
【中文标题】如何在 ASP.NET 5 中将 Entity Framework 6 与 MySQL 一起使用?【英文标题】:How do I use Entity Framework 6 with MySQL in ASP.NET 5? 【发布时间】:2015-10-24 09:34:55 【问题描述】:我有一个使用 ASP.NET MVC 4、Entity Framework 6 和 mysql 的现有站点。我正在尝试将其升级到 ASP.NET 5,但想继续使用 Entity Framework 6,因为 Entity Framework 缺少一些功能并且还不支持 MySQL。如何在 ASP.NET 5 中使用 EF6?
【问题讨论】:
【参考方案1】:由于 ASP.NET 5 不再使用 Web.config,因此您需要使用 code-based configuration 来配置它。为此,请创建一个继承自 DbConfiguration 的新类:
public class MyDbConfiguration : DbConfiguration
public MyDbConfiguration()
// Register ADO.NET provider
var dataSet = (DataSet)ConfigurationManager.GetSection("system.data");
dataSet.Tables[0].Rows.Add(
"MySQL Data Provider",
".Net Framework Data Provider for MySQL",
"MySql.Data.MySqlClient",
typeof(MySqlClientFactory).AssemblyQualifiedName
);
// Register Entity Framework provider
SetProviderServices("MySql.Data.MySqlClient", new MySqlProviderServices());
SetDefaultConnectionFactory(new MySqlConnectionFactory());
配置的第一部分是通过向system.data
部分动态添加新配置条目,在运行时注册 ADO.NET 提供程序的技巧。这很 hacky,但似乎可以正常工作。
将连接字符串添加到config.json
而不是Web.config
:
"Data":
"DefaultConnection":
"ConnectionString": "Server=localhost; Database=test; Uid=test; Pwd=password;"
修改DbContext
以使用正确的配置和连接字符串:
[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContext : DbContext
public MyContext(IConfiguration config)
: base(config["Data:DefaultConnection:ConnectionString"])
// ...
在Startup.cs
的依赖注入容器中注册MyContext
:
public void ConfigureServices(IServiceCollection services)
// ...
services.AddScoped<MyContext>();
然后您可以使用构造函数注入将MyContext
获取到您的控制器中。
更多详细信息请参见我的博文http://dan.cx/2015/08/entity-framework-6-mysql-aspnet,以及示例项目https://github.com/Daniel15/EFExample
【讨论】:
以上是关于如何在 ASP.NET 5 中将 Entity Framework 6 与 MySQL 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Entity Framework ASP.Net MVC 5 删除多条记录? [关闭]
如何在 Asp.Net Core Mvc 5.0 中将 sql 数据库与 ado.net 连接?
如何在 ASP.NET CORE 5.0 MVC 中将登录设置为默认路由
Asp.NET MVC 5 Entity Framework 中的对象名称“dbo.AspNetUsers”无效
Entity Framework Core 5.0 如何将多对多连接的 LINQ 转换为使用 ASP.NET 成员资格的交集表