這幾天一直在看MVC 開發模式,其中借助EF框架對數據庫進行 增刪改查操作 現在就小小的總結一下吧
在使用EF操作數據庫時,會首先添加 ADO.NET數據模型,這時,會為我們添加一個數據上下文類,使用這個類的對象可以對數據庫做任何操作。所以在使用EF操作數據庫之前 需要創建數據上下文對象。
MyDatabaseEntities mde = new MyDatabaseEntities();
1.使用EF 對數據庫 做增加操作
1.1 創建一個需要被操作數據表的對象(一般來說 ,一張表就是一個實體,也就是一個類),以tblPerson 表為例(int id,string name ,string sex,Nullable<int> age)其中age 不能為空 id 為主鍵,自動增長類型:
tblPerson personAdd=new tblPerson ();
personAdd.name ="lss";
personAdd.sex="男";
personAdd.age=23;(補充說明:由於tblPerson 表中規定了 age 不能為空,所以必須給它賦值,這個在之后的修改 刪除操作中會體現)
//在這里 注明一下 ,由於ID是自動增長型,所以添加的時候不需要給id賦值。
1.2 告訴EF上下文 要 對 數據庫 進行 增加操作
mde.tblPerson .Add(personAdd);
1.3 將實體的變化保存到數據庫
mde.SaveChanges()
2. 使用EF 對數據庫 做刪除操作
2.1 同理 創建一個 tblPerson 對象
tblPerson personDelete =new tblPerson ();
// 在進行刪除和修改操作時,一定要指明主鍵ID(在這里是ID,就是一個表的主鍵,在使用EF對表進行操作時,這個表一定需要指定主鍵)
// 假如我們使用 EF刪除 id為2 的那條記錄
personDelete.id=2;
// 由於age 是非空的 ,所以需要 給 age 賦值 隨便就可以
personDelete.age=23;
2.2.1 Method1 將 personDelete 對象加載到EF 實體容器中
mde.tblPerson.Attach(tblPersonDelete);
2.2.2 告訴上下文將要 進行 刪除 操作
mde.tblPerson.Remove(tblPersonDelete);
2.2.3 將所做的刪除操作保存到數據庫
mde.SaveChanges();
//到這里 刪除操作 做完了,下面介紹第二種方法
2.2.1 Method2 將personDelete 對象加載到EF 實體容器中 並且 獲取 返回 的 實體對象
DbEntityEntry<tblPerson> entryDelete = mde.Entry<tblPerson>(tblPersonDelete);
2.2.2 將實體對象 在EF 容器中的 狀態修改為 delete
entryDelete.State=System.Data.EntityState.Deleted
2.2.3 將刪除后的 實體 對象保存
mde.SaveChanges();
3. 使用EF 對數據庫 做 修改操作
3.1 創建 tblPerson 對象
tblPerson tblPersonModify=new tblPerson ();
// 在進行 修改操作時 需要指定id 假設我們修改 id為3 的那一條數據
tblPersonModify.id=3;
//指明要修改的 那一列 假如 將 id 為 3 的數據的 name改為 yzk
tblPersonModify.name="yzk";
//在這里 同時需要 給 age 賦值
tblPersonModify.age=34;
3.2 將tblPersonModify 對象加載到EF 框架 ,並且 獲取 返回的 實體對象
DnEntityEntry<tblPerson> entryModify=mde.Entry<tblPerson>(tblPersonModify);
3.3 將tblPersonModify 實體 對象 在EF框架中的存儲狀態 修改為 未修改
entryModify.State=System.Data.EntityState.UnChanged;
3.4 將tblPersonModify 對象中 需要 修改的 屬性 在EF中框架 的實體狀態 IsModified 修改為true ,表示 這個 屬性需要 EF 來修改
entryModify.Property(d=>d.name).IsModified=true;
3.5 告訴上下文 將修改的 實體 對象 保存到 數據庫
mde.SaveChanges();
4. 使用EF 對數據庫 進行 查詢操作 (SQO 和 linq)
4.1 使用SQO 對數據庫 進行查詢
4.1.1 在這里 產生 了 延遲加載 ,通過數據庫 里面的 工具可以知道 這一步並沒有 去數據庫 查詢 , 只是將sql查詢 語言 保存了
DbQuery<tblPerson> dbQuery= mde.tblPerson.Where(d=>d.name like "%l%")as DbQuery<tblPerson>;
4.1.2 當我們使用 ToList() 方法時,這樣 才從 數據庫 查詢除了 數據
List<tblPerson> list=dbQuery.ToList();
4.2 使用LINQ語句 對數據庫 進行 查詢
(from d in mde.tblPerson where d.name like "%l%" select d)
上面一段代碼 返回類型 是IQueryable<tblPerson> 泛型集合
和上面的一樣 ,使用的 時候 需要調用ToList()方法 將他轉化成 list集合
到這里 ,使用EF 對數據庫 進行 查詢,修改,添加,刪除 操作已經 寫完了 ,希望各位 多多指教 一起進步 !!!~~~~