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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

第十一节: EF的三种模式(一) 之 DBFirst模式(SQLServer和MySQL两套方案)

發布時間:2023/12/10 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第十一节: EF的三种模式(一) 之 DBFirst模式(SQLServer和MySQL两套方案) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 簡介

?  EF連接數據庫有三種模式,分別是DBFirst、ModelFirst、CodeFirst,分別適用于不同的開發場景。

  該章節,將主要介紹EF的DBFirst連接SQLServer數據庫和MySql數據庫兩種操作方式

  該模式在EF中出現的出現的最早,符合我們的傳統開發模式,先設計數據庫→然后在代碼通過EF與數據庫建立映射關系,是EF最早的一種使用方式,使用廣泛.以數據庫為驅動,生成實體模型,從而驅動整個開發流程。

?(1). 優點:操作簡單,直接通過可視化界面與數據庫表(存儲過程、視圖等)建立映射關系,省去自己建立表實體的繁瑣步驟.
?(2). 缺點:與表依賴太強,而且實體是通過T4模板生成的,無法自己根據實際需要來修改,并且一旦數據庫修改,就需要重新映射edmx文件了.
?(3). 特點:通過T4模板來生成EF上下文和實體模型; 并且可以直接將存儲過程或視圖映射到生成的上下文中,通過EF上下文直接調用存儲過程(詳見 EF調用存儲過程章節)

?

二. DBFirst連接SQLServer數據庫

1. 選擇ADO.NET數據實體模型

?

?

2. 選擇模型內容:來自數據庫的EF設計器

?

?

3. 設置服務器及連接字符串

?

?

?

4. 選擇數據庫的連接并且可以設置配置文件的名稱

?

5. 選擇要映射的表、視圖、存儲過程和函數,完成映射

?

?

6. 如果框架是分層的,需要將生產的連接數據庫的字符串,復制到主程序的配置文件中

?

三. DBFirst連接MySQL數據庫

?事先準備和注意事項:

?步驟:

?①:安裝mysql-connector-net-6.9.9.msi,下載地址:https://dev.mysql.com/downloads/connector/net/ (vs2012-vs2017通用)

?②:安裝mysql-for-visualstudio-1.2.7.msi,下載地址:https://dev.mysql.com/downloads/windows/visualstudio/ (vs2012-vs2017通用)

?③:連接遠程服務器需要先在對應數據庫服務器上對訪問外來的ip和用戶名、密碼進行授權。

?如:GRANT ALL PRIVILEGES ON *.* TO 'root'@'39.88.192.171' IDENTIFIED BY '123456' WITH GRANT OPTION;

?表示:ip為39.88.192.171的root用戶、密碼為123456可以遠程訪問該數據庫服務器

?④:安裝常規的DBFist模式進行連接即可,但連接界面要選擇MySQL對應的界面。

?特別注意:在使用該模式的時候,會遇到這么幾個煩人的情況,如果該項目中已經引用的了EF的程序集,在可視化界面無法選擇EF版本。

?但是如果你把引用的程序集刪了,可視化界面只能選擇EF5.0

?所以解決方案:

?步驟①:如果引用了EF的程序集,先刪掉,然后用可視化界面把EF5.0添加進來,然后在使用Nuget把EF5.0卸載掉。

?步驟②:通過nuget一次添加 EF6.x、MySql.Data、MySql.Data.Entity、MySql.Web 程序集的引用.

?步驟③:如果是分層開發,不但要向封裝層添加引用,還要想主程序層添加EF6.x、MySql.Data、MySql.Data.Entity、MySql.Web 程序集的引用.

?步驟④:主程序層配置文件中<entityFramework>→<providers>節點下添加:

?<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>

?如果是通過Nuget添加的程序集,檢查一下是否已經自動添加了,避免重復添加的情況

鏈接步驟:使用MySQL的客戶端界面

?

代碼測試,和SQLServer寫法并沒有什么兩樣

1     private static void NewMethod()2 {3 Console.WriteLine("-----------------------1. DBFirst模式連接MySQL數據庫-------------------------------");4 using (DbContext db = new mysqldb1Entities())5 {6 //1.1 測試查詢 (正常)7 //List<tbb1> tList = db.Set<tbb1>().ToList();8 //foreach (var item in tList)9 //{ 10 // Console.WriteLine("id為:{0},name為:{1}", item.id, item.name); 11 //} 12 13 //1.2 測試一下大數據 (正常) 14 Stopwatch watch = Stopwatch.StartNew(); 15 List<tbb1> tList2 = new List<tbb1>(); 16 for (int i = 0; i < 1000; i++) 17 { 18 tbb1 t = new tbb1(); 19 t.id = Guid.NewGuid().ToString("N"); 20 t.name = "t" + i; 21 tList2.Add(t); 22 } 23 db.BulkInsert(tList2); 24 watch.Stop(); 25 Console.WriteLine("{0}條數據耗時:{1}", 1000, watch.ElapsedMilliseconds); 26 } 27 } 28 #endregion

總結

以上是生活随笔為你收集整理的第十一节: EF的三种模式(一) 之 DBFirst模式(SQLServer和MySQL两套方案)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。