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;
            }
        }
  • 相关阅读:
    C# 接口
    C# 多态
    C# 继承
    C# 封装
    动态规划:从新手到专家
    hduoj题目分类
    4.2 最邻近规则分类(K-Nearest Neighbor)KNN算法应用
    警惕自增的陷阱(++)
    五大常用算法之四:回溯法
    算法java实现--回溯法--图的m着色问题
  • 原文地址:https://www.cnblogs.com/tangchun/p/7520052.html
Copyright © 2011-2022 走看看