MVC + EF 框架 對數據庫做增刪改查


這幾天一直在看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 對數據庫 進行 查詢,修改,添加,刪除 操作已經 寫完了  ,希望各位 多多指教  一起進步 !!!~~~~ 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM