日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時(shí)間:2025/3/15 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据库连接6_c# – 实体框架的动态MySQL数据库连接6 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

實(shí)體框架6提供了一些方便的細(xì)微變化,有助于使MySQL工作,并創(chuàng)建動(dòng)態(tài)數(shù)據(jù)庫(kù)連接。

使用Entity Framework 6獲取MySQL

首先,在我回答這個(gè)問(wèn)題的日期,與EF6兼容的唯一的.Net連接器驅(qū)動(dòng)程序是MySQL .Net Connectior 6.8.1(Beta開(kāi)發(fā)版本),可以找到at the official MySQL website here。

安裝后,從Visual Studio解決方案中引用以下文件:

> Mysql.Data.dll

> Mysql.Data.Entity.EF6.dll

您還需要將這些文件復(fù)制到構(gòu)建期間可以訪(fǎng)問(wèn)項(xiàng)目的位置,例如bin目錄。

接下來(lái),您需要添加一些項(xiàng)目到您的Web.config(或App.config如果在基于桌面的)文件。

連接字符串:

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

providerName="MySql.Data.MySqlClient" />

另外添加提供者,在< entityFramework />和< providers />節(jié)點(diǎn),可選(在處理動(dòng)態(tài)定義的數(shù)據(jù)庫(kù)時(shí),這是我答案的第二部分絕對(duì)必須的),您可以更改< defaultConnectionFactory />節(jié)點(diǎn):

如果從默認(rèn)的sql server連接更改defaultConnectionFactory,不要忘記刪除< parameter>嵌套在defaultConnectionFactory節(jié)點(diǎn)中的節(jié)點(diǎn)。 MysqlConnectionFactory對(duì)其構(gòu)造函數(shù)不采用任何參數(shù),如果參數(shù)仍然存在,則它將失敗。

在這個(gè)階段,用Entity連接到MySQL很容易,你可以通過(guò)名字來(lái)引用上面的connectionString。請(qǐng)注意,如果通過(guò)名稱(chēng)連接,即使defaultConnectionFactory節(jié)點(diǎn)仍然指向SQL Server(默認(rèn)情況下它),這將會(huì)起作用。

public class ApplicationDbContext: DbContext

{

public ApplicationDbContext() : base("mysqlCon")

{

}

}

這只是正常連接的問(wèn)題:

ApplicationDbContext db = ApplicationDbContext();

連接到動(dòng)態(tài)選擇的數(shù)據(jù)庫(kù)名稱(chēng)

在這一點(diǎn)上,很容易連接到一個(gè)可以作為參數(shù)傳遞的數(shù)據(jù)庫(kù),但是我們需要做一些事情。

重要的提示

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.

您可以將連接字符串手動(dòng)傳遞給上下文,如下所示:

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

{

}

但是為了讓它更容易一些,我們可以在設(shè)置mySQL時(shí)對(duì)我們上面提供的連接字符串做一個(gè)小的改動(dòng)。只需添加一個(gè)占位符,如下所示:

現(xiàn)在我們可以構(gòu)建一個(gè)幫助方法并更改ApplicationDbContext類(lèi),如下所示:

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);

}

}

如果您正在使用數(shù)據(jù)庫(kù)遷移,以下步驟很重要

如果您正在使用遷移,您將發(fā)現(xiàn)ApplicationDbContext將被框架傳遞給您的Seed方法,它將失敗,因?yàn)樗粫?huì)傳入我們?yōu)閿?shù)據(jù)庫(kù)名稱(chēng)輸入的參數(shù)。

將下面的類(lèi)添加到上下文類(lèi)的底部(或任何地方)來(lái)解決這個(gè)問(wèn)題。

public class MigrationsContextFactory : IDbContextFactory

{

public ApplicationDbContext Create()

{

return new ApplicationDbContext("developmentdb");

}

}

您的代碼優(yōu)先遷移和種子方法現(xiàn)在將定位到MySQL數(shù)據(jù)庫(kù)中的developmentdb模式。

希望這有助于某人:)

總結(jié)

以上是生活随笔為你收集整理的mysql数据库连接6_c# – 实体框架的动态MySQL数据库连接6的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。