Entity Framework 增刪改查和事務操作

1、增加對象  

複製代碼
            DbEntity db = new DbEntity();
            //創建對象實體,注意,這裏需要對所有屬性進行賦值(除了自動增長主鍵外),如果不賦值,則會數據庫中會被設置爲NULL(注意是否可空)
            var user = new User
                {
                    Name = "bomo",
                    Age = 21,
                    Gender = "male"
                };
            db.User.Add(user);
            db.SaveChanges();
複製代碼

2、刪除對象,刪除只需要對象的主鍵

複製代碼
            DbEntity db = new DbEntity();
            //刪除只需要主鍵,這裏刪除主鍵爲5的行
            var user = new User {Id = 5};

            //將實體附加到對象管理器中
            db.User.Attach(user);
            //方法一:
            db.User.Remove(user);
            //方法二:把當前實體的狀態改爲刪除
            //db.Entry(user).State = EntityState.Deleted;
            db.SaveChanges();
複製代碼

3、修改對象

  方法一:

複製代碼
            DbEntity db = new DbEntity();
            //修改需要對主鍵賦值,注意:這裏需要對所有字段賦值,沒有賦值的字段會用NULL更新到數據庫
            var user = new User
                {
                    Id = 5,
                    Name = "bomo",
                    Age = 21,
                    Gender = "male"
                };
            //將實體附加到對象管理器中
            db.User.Attach(user);
            //把當前實體的狀態改爲Modified
            db.Entry(user).State = EntityState.Modified;
            db.SaveChanges();
複製代碼

  方法二:方法一中每次都需要對所有字段進行修改,效率低,而且麻煩,下面介紹修改部分字段

複製代碼
            DbEntity db = new DbEntity();
            //修改需要對主鍵賦值,注意:這裏需要對所有字段賦值,沒有賦值的字段會用NULL更新到數據庫
            var user = new User
                {
                    Id = 5,
                    Name = "bomo",
                    Age = 21
                };
            //將實體附加到對象管理器中
            db.User.Attach(user);
            
            //獲取到user的狀態實體,可以修改其狀態
            var setEntry = ((IObjectContextAdapter) db).ObjectContext.ObjectStateManager.GetObjectStateEntry(user);
            //只修改實體的Name屬性和Age屬性
            setEntry.SetModifiedProperty("Name");
            setEntry.SetModifiedProperty("Age");

            db.SaveChanges();
複製代碼

4、使用事務:使用事務很簡單,只要把需要的操作放在 TransactionScope 中,最後提交

複製代碼
            DbEntity db = new DbEntity();
            using (var scope = new TransactionScope())
            {
                //執行多個操作
                var user1 = new User
                {
                    Name = "bomo",
                    Age = 21,
                    Gender = "male"
                };
                db.User.Add(user1);
                db.SaveChanges();
                
                var user2 = new User
                {
                    Name = "toroto",
                    Age = 20,
                    Gender = "female"
                };
                db.User.Add(user2);
                db.SaveChanges();

                //提交事務
                scope.Complete();
            }
複製代碼

5、查詢:查詢通過LinQ查詢

            DbEntity db = new DbEntity();
            //選擇部分字段
            var user = db.User.Where(u => u.Name == "bomo").Select(u => new {Id = u.Id, Name = u.Name, Age = u.Age}).FirstOrDefault();
            //只有調用了FirstOrDefault, First, Single, ToList, ToArray等函數纔會執行對數據庫的查詢

  查詢基本都是LinQ的內容,內容有點多,下次在總結

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