实体框架6提供了一些方便的细微变化,有助于使MySQL工作,并创建动态数据库连接。

使用Entity Framework 6获取MySQL

首先,在我回答这个问题的日期,与EF6兼容的唯一的.Net连接器驱动程序是MySQL .Net Connectior 6.8.1(Beta开发版本),可以找到at the official MySQL website here。

安装后,从Visual Studio解决方案中引用以下文件:

> Mysql.Data.dll

> Mysql.Data.Entity.EF6.dll

您还需要将这些文件复制到构建期间可以访问项目的位置,例如bin目录。

接下来,您需要添加一些项目到您的Web.config(或App.config如果在基于桌面的)文件。

连接字符串:

connectionString="Server=localhost;Database=dbName;Uid=username;Pwd=password"

providerName="MySql.Data.MySqlClient" />

另外添加提供者,在< entityFramework />和< providers />节点,可选(在处理动态定义的数据库时,这是我答案的第二部分绝对必须的),您可以更改< defaultConnectionFactory />节点:

如果从默认的sql server连接更改defaultConnectionFactory,不要忘记删除< parameter>嵌套在defaultConnectionFactory节点中的节点。 MysqlConnectionFactory对其构造函数不采用任何参数,如果参数仍然存在,则它将失败。

在这个阶段,用Entity连接到MySQL很容易,你可以通过名字来引用上面的connectionString。请注意,如果通过名称连接,即使defaultConnectionFactory节点仍然指向SQL Server(默认情况下它),这将会起作用。

public class ApplicationDbContext: DbContext

{

public ApplicationDbContext() : base("mysqlCon")

{

}

}

这只是正常连接的问题:

ApplicationDbContext db = ApplicationDbContext();

连接到动态选择的数据库名称

在这一点上,很容易连接到一个可以作为参数传递的数据库,但是我们需要做一些事情。

重要的提示

If you have not already, you MUST change the defaultConnectionFactory in Web.config if you wish to connect to MySQL

dynamically. Since we will be passing a connection string directly to

the context constructor, it will not know which provider to use and

will turn to its default connection factory unless specified in

web.config. See above on how to do that.

您可以将连接字符串手动传递给上下文,如下所示:

public ApplicationDbContext() : base("Server:localhost;...")

{

}

但是为了让它更容易一些,我们可以在设置mySQL时对我们上面提供的连接字符串做一个小的改动。只需添加一个占位符,如下所示:

现在我们可以构建一个帮助方法并更改ApplicationDbContext类,如下所示:

public class ApplicationDbContext: DbContext

{

public ApplicationDbContext(string dbName) : base(GetConnectionString(dbName))

{

}

public static string GetConnectionString(string dbName)

{

// Server=localhost;Database={0};Uid=username;Pwd=password

var connString =

ConfigurationManager.ConnectionStrings["mysqlCon"].ConnectionString.ToString();

return String.Format(connString, dbName);

}

}

如果您正在使用数据库迁移,以下步骤很重要

如果您正在使用迁移,您将发现ApplicationDbContext将被框架传递给您的Seed方法,它将失败,因为它不会传入我们为数据库名称输入的参数。

将下面的类添加到上下文类的底部(或任何地方)来解决这个问题。

public class MigrationsContextFactory : IDbContextFactory

{

public ApplicationDbContext Create()

{

return new ApplicationDbContext("developmentdb");

}

}

您的代码优先迁移和种子方法现在将定位到MySQL数据库中的developmentdb模式。

希望这有助于某人:)

mysql数据库连接6_c# – 实体框架的动态MySQL数据库连接6相关推荐

  1. mysql java 分页实体类_Java GUI+mysql+分页查询

    1.要求 : 创建一个学生信息管理数据库 2.实现分页查询 代码如下: a)学生实体类: /***@author: Annie * @date:2016年6月23日 * @description:学生 ...

  2. mysql表 c#实体类,创建基于MySQL表中的C#类

    Is there anything built into .Net or visual studio that will allow my to create classes based off of ...

  3. mysql ef 一对多 更新数据库_Entity Framework_成功针对多种数据库使用实体框架(EF)...

    ORM 用户已经习惯于处在 .NET 和 LINQ 角度思考问题,缺忘记了特定数据库的细节--在功能和执行 SQL 效率上的差异.本文简要讨论一些在用户利用实体框架(Entity Framework, ...

  4. mysql ef6 您的项目引用了最新版_您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧...

    转载至: http://www.cnblogs.com/Imaigne/p/4153397.html 您的项目引用了最新实体框架:但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mys ...

  5. vs已经引用mysql还是不能用_VS2013与MySql建立连接;您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧[转载]...

    在vs2013中使用mysql连接entityFramework经常会遇到这个问题:您的项目引用了最新实体框架:但是,找不到数据连接所需的与版本兼容的实体框架数据提供程序.请退出此向导,安装兼容提供程 ...

  6. mysql与其他连接需要的框架_VS2013与MySql建立连接;您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧...

    因为之前都是看别人的项目,而没有自己从头到尾建立一个项目,所以这次尝试搭建时就出现了问题,主要是ASP.Net MVC项目中VS2013和MySql的连接. 第一个问题: 数据库表已建好,相应的数据库 ...

  7. 具有固定名称mysql.data_SQLServer数据库之未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架 解决方案...

    本文主要向大家介绍了SQLServer数据库之未找到具有固定名称"System.Data.SqlClient"的 ADO.NET 提供程序的实体框架 解决方案,通过具体的内容向大家 ...

  8. wpf mysql 框架_带有 WPF 和实体框架6的简单数据应用 - Visual Studio | Microsoft Docs

    使用 WPF 和 Entity Framework 6 创建简单的数据应用程序Create a simple data application with WPF and Entity Framewor ...

  9. mysql sqlsugar_【开源框架】SqlSugarRepository 全库ORM 正式发布

    SqlSugarRepository.dll 全库开发框架支持 四种数据库:SqlServer. MySql .Oracle和Sqlite. SqlSugarRepository是为全库开发而生的OR ...

最新文章

  1. 全卷积神经网路【U-net项目实战】U-Net网络练习题: Kaggle - 2018 Data Science Bowl
  2. 2年Java面试提问总结
  3. 记录下两个孩子在MineCraft里面还原公寓的经历
  4. python 实现HMAC_SHA1算法
  5. 查询空值中的注意事项
  6. DHCP中继处理办法
  7. volatile关键字与synchronization关键字的区别?
  8. Android 百度地图开发(三)--- 实现比例尺功能和替换自带的缩放组件
  9. 八大排序算法思想介绍
  10. LINUX FFMPEG编译详细过程记录(最全)
  11. 小程序投票帮怎么刷票
  12. 腾讯视频qlv格式怎么转换成mp4在手机上播放
  13. linux 下ssd训练自己的数据
  14. Ubuntu下使用外置USB无线网卡
  15. 手动安装hadoop集群
  16. uniapp中页面白屏问题
  17. 【大底大顶接近预警】副图指标 分清大顶大底 轻松做波段 通达信 源码
  18. 删除node_modules文件夹太慢
  19. matlab 根据长轴,短轴,中心坐标画椭圆
  20. NLP模型笔记2022-03:简单理解nlp句法分析

热门文章

  1. VoxelNet: 基于点云的三维空间信息逐层次学习网络
  2. Python1:if / while / for...in / break /continue
  3. Syslinux引导文件名与菜单解释
  4. Delphi 能不能从Ring 3进入Ring 0
  5. 原子操作和互斥量的区别
  6. 不同的寻址方式的应用——将每行单词的前X个字母改为大写
  7. BugkuCTF-Misc:做个游戏(08067CTF)
  8. 调用自定义函数search(int list[], int n),在数组中查找某个数
  9. shadow ssdt学习笔记
  10. 图解远程版本库开发周期 —— Git 学习笔记 22