EF學習和使用(一)Database First
上篇部落格中介紹了ORM思想,可以說ORM思想在資料互動方面給我們帶來了一次變革。他能夠自動實現Entity實體的屬性與關係型資料庫欄位的對映,增刪改查的sql指令碼由ORM來自動生成,使我們編碼時不用考慮資料庫資料結構,而是以操作實體物件的形式來完成與資料庫的互動。與傳統開發方式相比ORM可以使我們編寫更少的程式碼來建立和維護應用程式。不得不說ORM這種思想的確優雅。
實現ORM思想的框架有很多,有重型的 Hibernate,EF,Nhibernate,微型的dapper,Fetalpoco等, 兩類框架各有千秋,需要按照系統情況進行選擇。重型的ORM框架適合與企業內部系統,使用人數最好一萬以內。如果是網際網路系統則應該選擇微型的ORM框架。
ITOO .net版選用的是EntityFramework,對於EF已經學習和使用過一段時間了,現在來對EF做個系列的總結。
Entity Framework 是微軟以 ADO.NET 為基礎所發展出來的物件關係對應 (O/R Mapping) 解決方案,EF4.1之前EF支援“Database First”和“Model First”程式設計方式,從EF4.1開始EF開始支援支援“Code First”程式設計方式,今天咱們先從最簡單的Database First開始說起,建立起咱們的第一個EF程式。
“Database First”模式顧名思義:“資料庫優先”,使用這種模式的前提是應用程式已經擁有相應的資料庫,咱們可以使用EF設計工具由資料庫生成資料模型類,也可以使用Visual Studio模型設計器修改這些模型之間對應關係。
第一步:
首先建立一個控制檯應用程式,然後右鍵新增新建項,選擇“ADO.NET 實體資料模型”,名稱輸入ModelTest:
第二步:
接著選擇來“自資料庫的EF設計器”即DataBaseFirst:
第三步:
選擇新建連線並設定連線屬性:
第四步:
然後選擇剛才新建的連線
第五步:
然後選擇要對映的“User”表,完成:
建立完模型之後,你會發現Visual Studio自動為你生成了“User”實體類和一個“EFTestEntitiesContext”資料庫上下文操作類:
下面簡單的看一下如何使用EF進行資料查詢,查詢可用兩種方式,Linq和Lambda。
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EFDBFirst
{
class Program
{
static void Main(string[] args)
{
//例項化資料庫上下文
EFTestEntities dbcontext = new EFTestEntities();
//使用Lambda表示式查詢資料
var user = dbcontext.User.Where(o => o.Name == "qiumuxiaq141812").ToList();
//Linq語句查詢
var user1 = from o in dbcontext.User
where o.Name == "qiumuxiaq141813"
select o;
//列印查詢結果
if (user.Any())
{
Console.WriteLine("Lambda方式:"+ user.First().Name + "----" + user.First().Sex);
Console.WriteLine("Linq方式:" + user1.First().Name + "----" + user1.First().Sex);
}
Console.Read();
}
}
}
執行結果如下圖:
注意:如果咱們的資料庫表結構發生改變後,只需在模型設計檢視空白處右鍵,選擇“從資料庫更新模型”接著按照嚮導操作即可將模型更新。