建立上下文對象:sql
WordBoradEntities db = new WordBoradEntities();
添加:數據庫
//1.1建立實體對象 User uObj = new User() { uName = "劉德華",aa uLoginName = "aaa", uPwd = "asdfasdfasdfsadf", uIsDel = false, uAddtime = DateTime.Now }; //1.2經過EF新增到數據庫 //1.2.1將對象加入到數據上下文的 User集合中 db.Users.Add(uObj); //1.2.2調用數據上下文的保存方法,將對象存數數據庫 db.SaveChanges();
查詢:優化
List<User> list = db.Users.Where(u => u.uName == "劉德華").ToList();
鏈接查詢:linq鏈接查詢: spa
from a in db.User join b in db. UsersAddresses on a.Id equals b.udid
EF鏈接查詢:code
IQueryable<UsersAddress> addrs = db.User.Include("UsersAddresses").Where(a => a.Id == 1);
另外一種鏈接查詢:對象
var list=db.User.Join(db. UsersAddresses,c=>c.Id,g=>g.udid,(c,g)=>new{Name=c.Name,GroupName=g.GroupName});
刪除:EF中實現刪除有三種方式blog
注:版本1、二都是根據主鍵刪除,版本三是根據任意條件到數據庫查詢而後再根據查詢的結果進行刪除,實際上版本三也是根據查詢出來的結果中的主鍵進行刪除。it
版本一:根據主鍵刪除io
//實例化一個Users對象,並指定Id的值 Users user = new Users() { Id = 1 }; //將user附加到上下文對象中,並得到EF容器的管理對象 var entry = db.Entry<User>(user);或者 var entry=db.Entry(user); //設置該對象的狀態爲刪除 entry.State = EntityState.Deleted; //保存修改 db.SaveChanges(); Console.WriteLine("刪除成功!"); 版本二:根據主鍵刪除 //實例化一個Users對象,並指定Id的值 Users user = new Users() { Id = 1 }; //將user附加到上下文對象中 db.Users.Attach(user); //刪除user對象 Db.Users.Remove(user); //保存修改 db.SaveChanges(); Console.WriteLine("刪除成功!"); 版本三:根據條件先查詢出來而後再刪除 var list= db.Users.Where(u => u.Name ==」張三」); if(list!=null&&list.Any()) { Foreach(User item in list) { db.User.Remove(item); } } db.SaveChanges(); 修改: 1.官方推薦的修改方式(先查詢,再修改) //將Id爲2的Users數據取出 var user = db.Users.Where(u => u.Id == 2).FirstOrDefault(); Console.WriteLine("修改以前:" + user.UserName); //修改UserName屬性 user.UserName = "222222222222222"; //保存修改 db.SaveChanges(); Console.WriteLine("修改以後:" + user.UserName); 2.本身優化的修改方式 //1.建立出一個要修改的對象 User use = new User() { uId = 8,uName="小白~~~"}; //2.將對象加入 EF容器,並獲取當前實體對象的狀態管理對象 DbEntityEntry<User> entry = db.Entry<User>(user); //3.設置該對象爲被修改過 entry.State = System.Data.EntityState.Unchanged; //4.設置該對象的 uName屬性爲修改狀態,同時 entry.State 被修改成 Modified 狀態 entry.Property("uName").IsModified = true; //5.關閉EF實體合法性檢查(若是建立出來的要修改的數據有的字段沒有賦值則關閉實體合法性檢查,若是全部字段都賦值了則不用關閉EF實體合法性檢查) db.Configuration.ValidateOnSaveEnabled = false; //6.從新保存到數據庫 -- ef 上下文會根據實體對象的狀態,根據 entry.State =Modified 的值生成對應的 update sql 語句. db.SaveChanges(); Console.WriteLine("修改爲功:");