EF 更新部分字段寫法


EF 更新部分字段寫法

1、EF默認是查詢出來,修改后保存;

2、設置不修改字段的IsModified為false,此方法不需要先從數據庫查詢出實體來(最優方法):

  

          db.Set<T>().Attach(entity);//將數據用未更改的狀態放在上下文中,相當於從數據庫讀取了該實體

            var loginUser = GetLoginUser();
            entity.ModifyDate = DateTime.Now;
            entity.ModifyId = loginUser.Id;
            entity.ModifyName = loginUser.UserName;

            db.Entry(entity).State = EntityState.Modified;
            db.Entry(entity).Property("CreateId").IsModified = false;
            db.Entry(entity).Property("CreateName").IsModified = false;
            db.Entry(entity).Property("CreateDate").IsModified = false;

           db.SaveChanges();

3、使用 EntityFramework.Extended 擴展,缺點是EF的上下文日志不能捕獲執行的sql,此方法也比較麻煩需要逐一例舉修改的字段;該擴展還支持批量修改,批量更新,緩存..............

using EntityFramework.Extensions;

  db.Set<SysRole>().Where(c => c.Id == sysRole.Id)
                            .Update(c => new SysRole
                                {
                                    RoleName = sysRole.RoleName,
                                    Level = sysRole.Level,
                                    ModifyDate = DateTime.Now,
                                    ModifyId = loginUser.Id,
                                    ModifyName = loginUser.UserName
                                });

 


免責聲明!

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



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