如何在 ASP.NET 5 中将实体框架 6 与 MySQL 结合使用?

2024-03-12

我有一个使用 ASP.NET MVC 4、Entity Framework 6 和 MySQL 的现有网站。我正在尝试将其升级到 ASP.NET 5,但希望继续使用实体框架 6,因为实体框架缺少一些功能并且尚不支持 MySQL。如何在 ASP.NET 5 中使用 EF6?


由于 Web.config 不再与 ASP.NET 5 一起使用,因此您需要使用基于代码的配置 https://msdn.microsoft.com/en-us/data/jj680699.aspx来配置它。为此,创建一个继承自 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());
    }
}

配置的第一部分是在运行时注册 ADO.NET 提供程序,方法是动态地将新的配置条目添加到system.data部分。这是非常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"])
      {
      }
      // ...
}

登记MyContext在依赖注入容器中Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddScoped<MyContext>();
}

然后你可以使用构造函数注入来获取MyContext进入您的控制器。

更多详细信息,请参阅我的博客文章:http://dan.cx/2015/08/entity-framework-6-mysql-aspnet http://dan.cx/2015/08/entity-framework-6-mysql-aspnet,以及一个示例项目https://github.com/Daniel15/EFExample https://github.com/Daniel15/EFExample

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET 5 中将实体框架 6 与 MySQL 结合使用? 的相关文章

随机推荐

  • 在 SimpleHTTPServer.py 中重定向浏览器?

    我部分通过实现功能简单HTTP服务器 py http hg python org cpython file tip Lib SimpleHTTPServer py在方案中 我对 HTTP 请求 响应机制很感兴趣 在查看上面的文件时 我遇到了
  • PostgreSQL 中的 IN 与 ANY 运算符

    有什么区别IN and ANYPostgreSQL 中的运算符 两者的工作机制似乎是相同的 谁能用一个例子来解释这一点 严格来讲 IN and ANY是 Postgres 构造 或 语法元素 而不是 运算符 从逻辑上来说 引用手册 http
  • 从“最近的应用程序”启动应用程序和点击应用程序图标有什么区别

    我正在开发大型项目 因此有一些逻辑可以保存应用程序状态 然后在来自后台时打开正确的活动 片段 但无论如何 我发现如果用户浏览我的应用程序然后最小化它 android 在以下情况下会以不同的方式从后台打开它 用户点击应用程序图标 行为 当应用
  • 扩展 Object.setPrototypeOf() 与 Object.create

    我知道继承函数构造函数的两种方法 选项1对象 创建 function x x y this x x this y y x prototype XDD function function y c r x call this 1 2 this
  • 引用其他类上的静态属性时的 C# 线程安全

    我有一个方法来生成我编写的完全限定的 URL 我希望将其作为静态的 以便根据需要从模型中轻松调用 然而 我仍然无法确定其线程是否安全 这是代码 public string GenerateURLFromModel string action
  • Windows 中什么是零字节可执行文件

    我注意到在安装某些应用程序期间创建的文件夹 USERPROFILE AppData Local Microsoft WindowsApps 中有一些零字节可执行文件 这些是什么 如何像Windows一样创建和调用它 谢谢 GameBarEl
  • ASP.NET 多个联合身份提供商

    我正在开发一个 ASP NET 应用程序 我已成功添加对独立 AD FS 2 0 服务器的 STS 引用 因此我可以针对第 3 方的活动目录进行身份验证 问题是我有多个客户希望能够针对自己的活动目录进行身份验证 看来我只能在一个项目中添加一
  • 有没有办法限制 firebase 中的儿童数量?

    我有一个火力基地 我经常推动它 就像聊天一样 我担心聚集在火力基地的孩子数量 当所有连接都消失时 它们都会被删除 但是有没有办法限制其中的数量 Cheers 你可以使用这样的方法来实现类似的东西环形缓冲区 http en wikipedia
  • SQL 数据库中的持久变量?

    有没有办法将简单 持久 变量声明为 SQL 数据库的一部分 我正在尝试手动实现类似于 auto increment 的机制 但不与任何特定字段或表关联 每次调用我的一组过程中的一个时 我希望该变量增加 我发现你可以创建本地变量 会话变量和全
  • Pandas:在条件后创建指示列

    import numpy as np import pandas as pd df pd DataFrame cond A A A A A A A A A B B B B B B B B B Array S S TT TT S S TT T
  • Crashlytics 在初始化期间超时

    当我使用 Crashlytics 运行 Android 应用程序时 它在启动时挂起 并且我得到一个TimeoutException 然后 当我尝试使应用程序崩溃时 我收到另一个 TimeoutException 并显示消息Crashlyti
  • Django BooleanField 作为下拉菜单

    有没有办法让 Django BooleanField 成为表单中的下拉菜单 现在它呈现为单选按钮 是否可以有一个带有选项的下拉菜单 是 否 目前我对该字段的表单定义是 attending forms BooleanField require
  • 为什么将 Spring Cloud 应用程序与 AWS Parameter Store 集成不会从参数存储中返回任何属性?

    Intent 我正在开发一个 POC 打算使用 AWS 参数存储作为属性存储 这会将机密应用程序属性存储在 AWS SSM 的参数存储中 我正在使用 Java 8 和 spring boot cloud 版本 2 Resource 我跟着本
  • 打印顶部没有 XML 标题行的 XML 文档

    我只是想找出如何to xml with a Nokogiri XML Document or a Nokogiri XML DocumentFragment 或者 我想在Nokogiri XML DocumentFragment 我无法确定
  • AsParallel() 如何分割它的“源”?

    我试图确定 AsParallel 如何分割它的 源 以及 源 的含义 例如 public class CSVItem public DateTime Date get set public string AccountNumber get
  • Google Cloud Dataflow:通过命令行参数指定 TempLocation

    我尝试通过将其作为命令行中的选项传递来指定我的 GCS 临时位置 如下所示 java jar pipeline 0 0 1 SNAPSHOT jar runner DataflowRunner project
  • Array.push.setAnyFormatting('红色')?

    描述 Stack Overflow 用户 mhawksey 最近做了一些出色的优化 https stackoverflow com questions 35289183 long processing time likely due to
  • 如何将vim(通过tmux)绑定到Cmd键

    我通常使用 macvim 并且使用 macs 命令键有许多键绑定 我正在尝试切换到 tmux 但这些绑定都不起作用 有关如何修改我的 tmux config 或 vimrc 以恢复这些绑定的任何提示 你是否有机会使用
  • 如何在单击时切换选中/未选中状态时更改复选框标签的颜色

    当我选中或取消选中时 我试图更改复选框标签的字体颜色和背景颜色 我在这个网站上找到了一个 javascript 解决方案 但无法使代码正常工作 这是我到目前为止所尝试过的 现在它正在将 突出显示 类附加到父 div 我只想更改标签 谢谢你的
  • 如何在 ASP.NET 5 中将实体框架 6 与 MySQL 结合使用?

    我有一个使用 ASP NET MVC 4 Entity Framework 6 和 MySQL 的现有网站 我正在尝试将其升级到 ASP NET 5 但希望继续使用实体框架 6 因为实体框架缺少一些功能并且尚不支持 MySQL 如何在 AS