zoukankan      html  css  js  c++  java
  • EF扩展 更新指定字段

    using System.Data.Entity.Infrastructure;
    using System.Threading.Tasks;
    
    /// <summary>
        /// EF扩展
        /// </summary>
        public static class EFExtensions
        {
            /// <summary>
            /// 更新实体根据字段
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="db">数据库上下文</param>
            /// <param name="entity">实体</param>
            /// <param name="fields">更新的字段列表</param>
            public static int UpdateEntityFields<T>(this ApplicationDbContext db, T entity, IList<string> fields) where T : class
            {
                if (entity == null || fields == null || fields.Count == 0)
                {
                    return 0;
                }
                db.Set<T>().Attach(entity);
                var SetEntry = ((IObjectContextAdapter)db).ObjectContext.
                     ObjectStateManager.GetObjectStateEntry(entity);
                foreach (var item in fields)
                {
                    SetEntry.SetModifiedProperty(item);
                }
                return db.SaveChanges();
            }
    
            /// <summary>
            /// 异步更新实体根据字段
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="db">数据库上下文</param>
            /// <param name="entity">实体</param>
            /// <param name="fields">更新字段列表</param>
            /// <returns>受影响的行数</returns>
            public static async Task<int> UpdateEntityFieldsAsync<T>(this ApplicationDbContext db, T entity, IList<string> fields) where T : class
            {
                if (entity == null || fields == null || fields.Count == 0)
                {
                    return 0;
                }
                db.Set<T>().Attach(entity);
                var SetEntry = ((IObjectContextAdapter)db).ObjectContext.
                     ObjectStateManager.GetObjectStateEntry(entity);
                foreach (var item in fields)
                {
                    SetEntry.SetModifiedProperty(item);
                }
                int result = await db.SaveChangesAsync();
                return result;
            }
        }
  • 相关阅读:
    Mysql 数据库 表中列的操作
    FreeSWITCH版本更新
    shell脚本58问
    Wireshark 与 Tcpdump
    Mysql 中 int(3) 和 int(11) 的区别
    FreeSWITCH 基础
    FreeSWITCH 学习笔记(一)
    Mysql 复制表数据(表结构相同)
    Centos date 设置自定义时间
    Mysql 主键
  • 原文地址:https://www.cnblogs.com/tangchun/p/7520052.html
Copyright © 2011-2022 走看看