• 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;
            }
        }
  • 相关阅读:
    cocos2dx A* + tiledMap
    cocos2dx A*算法
    A*算法
    在VS2012中使用GitHub
    史上最全设计模式导学目录(完整版)
    IT之家
    各种与视频编解码以及视频图像处理的应用相关的新技术,新方法,各种软件开发相关的算法,思想。
    linux下vim命令详解
    两篇很牛的vim使用技巧
    (转)linux下导入、导出mysql数据库命令
  • 原文地址:https://www.cnblogs.com/tangchun/p/7520052.html
Copyright © 2020-2023  润新知