EF的增刪改查


創建上下文對象:WordBoradEntities db = new WordBoradEntities();

添加://1.1創建實體對象

            User uObj = new User()

            {

                uName = "劉德華",

                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連接查詢: from a in db.User join b in db. UsersAddresses  on a.Id equals b.udid

EF連接查詢: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中實現刪除有三種方式

注:版本一、二都是根據主鍵刪除,版本三是根據任意條件到數據庫查詢然后再根據查詢的結果進行刪除,實際上版本三也是根據查詢出來的結果中的主鍵進行刪除。

版本一:根據主鍵刪除

//實例化一個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.官方推薦的修改方式(先查詢,再修改)

//Id2Users數據取出

      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("修改成功:");


免責聲明!

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



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