EF框架的個人所得

EF框架的定義

微軟官方提供的ORM工具,ORM讓開發人員節省數據庫訪問的代碼時間,將更多的時間放到業務邏輯層代碼上。EF提供變更跟蹤、唯一性約束、惰性加載、查詢事物等。開發人員使用Linq語言,對數據庫操作如同操作Object對象一樣省事。

作用

優缺點

優點
1、應用程序可以通過更加以應用程序爲中心的概念性模型(包括具有繼承性、複雜成員和關係的類型)來工作。

2、應用程序不再對特定的數據引擎或存儲架構具有硬編碼依賴性。

3、可以在不更改應用程序代碼的情況下更改概念性模型與特定於存儲的架構之間的映射。

4、開發人員可以使用可映射到各種存儲架構(可能在不同的數據庫管理系統中實現)的一致的應用程序對象模型。

5、多個概念性模型可以映射到同一個存儲架構。 · 語言集成查詢支持可爲查詢提供針對概念性模型的編譯時語法驗證。

缺點
1.由於linq語句編譯之後就是sql,對於這種自動生成的sql語句無法控制;

2.EF的運行機制會消耗大量內存,大大降低了程序運行效率,從而導致降低了用戶在客戶端的體驗效果;

3.一旦數據結構發生變化,需要更新EF數據model;有時還可能會出現找不到更新過的實體類這種情況;

EF框架的簡單用法

首先自己創建一個數據庫,創建一個role(角色)表。表數據自行添加

字段設置一個name,remark備註就行

新增

這些方法都是直接定義在index方法裏面的
方法一:
Role role= new Role ()
            {
                Name = "小王",
                Remark = "棒"
            };
            db.Role .Add(role);
            db.SaveChanges();
方法二:
Role role2= new Role ()
            {
                Name = "佩佩",
                Remark = "可以"
            };
            db.Entry(role2).State = System.Data.Entity.EntityState.Added;
            db.SaveChanges();  
方法三:
                List<Role > roles= new List<Role >()
            {
                new Role ()
                {
                    Name="lih",
                    Remark="bang"
                },
                new Role ()
                {
                    Name="ky",
                    Remark="niup"
                }
            };
            db.Roles.AddRange(roles);
            db.SaveChanges();
     

修改

方法一:
public ActionResult Edit()
        {
            //var a = db.Roles.Where(p => p.ID == 22).FirstOrDefault();
            //a.Name = "sg";
            //db.Entry(a).State = System.Data.Entity.EntityState.Modified;

方法二:
            db.SaveChanges();

            Role role= new Role()
            {
                ID = 22,
                Remark = "牛"
            };
            db.Entry(role).State = System.Data.Entity.EntityState.Modified;
            db.SaveChanges();
            return View();
        }

刪除

 public ActionResult Deletes()
        {
            List<UserInfo> userd = db.UserInfos.Where(p => p.Remark == "666").ToList();       
            db.UserInfos.RemoveRange(userd);
            return View();
        }

如上代碼可以直接使用,有誤的話可以留言反饋,謝謝大家!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章