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 == )
{
return ;
}
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 == )
{
return ;
}
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;
}
}

EF扩展 更新指定字段的更多相关文章

  1. EF更新指定字段.或个更新整个实体

    EF更新指定字段.或个更新整个实体 更新整个实体: public bool Update(Company compay) { if (compay != null) { dbContext.Entry ...

  2. 关于EF更新数据库,更新指定字段的设置

    1.关于EF跟新数据库更新指定字段的设置 在EF提交到数据库的时候或许某些字段不想更新.或者自己更新一个模型到数据库去! 1.更新数据不更新一些字段 /// <summary> /// 数 ...

  3. OnionArch - 如何实现更新指定字段的通用Handler

    博主最近失业在家,找工作之余,自己动手写了个洋葱架构(整洁架构)解决方案,以总结和整理以前的项目经验,起名叫OnionArch,其目的是为了更好的实现采用DDD(领域驱动分析)和命令查询职责分离(CQ ...

  4. EF更新指定字段...

    EF更新指定的字段... 搜来搜去发现没有自己想要的啊... 或许本来就有更好的办法来实现我这个,所以没有人来搞吧... 如果有,请不吝告知..GG.. //要更改UserInfo表中指定的列,比如这 ...

  5. MongoDB学习笔记~为IMongoRepository接口更新指定字段

    回到目录 对于MongoDB来说,它的更新建议是对指定字段来说的,即不是把对象里的所有字段都进行update,而是按需去更新,这在性能上是最优的,这当然也是非常容易理解的,我们今天要实现的就是这种按需 ...

  6. EF 如何更新少量字段

    EF更新少量字段需要解决两个问题 1.动态的将需要更新的字段提取出来 2.将提取出来的字段设为更新状态 通常更新的时候,都是根据条件将实体取出来,然后赋值字段,最后更新整个实体,所以在方法上看似是更新 ...

  7. EF 只更新部分字段

    /// 只更新storedAddress数据中的DefaultAddress字段,更新为false /// 将默认地址改为不是默认地址 /// </summary> /// <par ...

  8. MySQL存储过程(更新指定字段的数据)

    mysql存储过程示例: USE 数据库名称;DROP PROCEDURE IF EXISTS 数据库名称.存储过程名称;delimiter $$CREATE PROCEDURE 数据库名称.存储过程 ...

  9. entity framework 5 更新指定字段

    dbSet.Attach(good); var stateEntry = ((IObjectContextAdapter)context).ObjectContext. ObjectStateMana ...

随机推荐

  1. Go并发编程之美-CAS操作

    摘要: 一.前言 go语言类似Java JUC包也提供了一些列用于多线程之间进行同步的措施,比如低级的同步措施有 锁.CAS.原子变量操作类.相比Java来说go提供了独特的基于通道的同步措施.本节我 ...

  2. SVN服务器搭建实录

    第一章  SVN介绍 1.1 什么是SVN(subversion) SVN是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个固态的跨平台的开源的版本控制系统.SVN版本管理工具管 ...

  3. mysql 开发进阶篇系列 25 数据库RPM安装目录介绍

    一.概述 mysql可以在多个平台上运行,在windows平台上安装有noinstall包和图形化包二种方式.在linux/unix平台上有RPM包安装,二进制包(Binary Package)安装, ...

  4. rtsp信令交互流程

  5. Java设计模式学习记录-责任链模式

    前言 已经把五个创建型设计模式和七个结构型设计模式介绍完了,从这篇开始要介绍行为型设计模式了,第一个要介绍的行为型设计模式就是责任链模式(又称职责链模式). 责任链模式 概念介绍 责任链模式是为了避免 ...

  6. noip之后的一些感受

    你经历过绝望吗,那种希望完全破碎,眼前看不到光亮,不知道下一步怎么走,不知道接下来应该如何生活的那种绝望? 我经历过. 2018.11.12 下午 秦皇岛到石家庄的高铁上 听着同学兴高采烈的讨论,自己 ...

  7. R语言实战 —— 常见问题解决方法

    1.不存在叫XXX这个名字的程序包 > library(reshape) Error in library(reshape) : 不存在叫‘reshape’这个名字的程辑包 解决方法:先安装,后 ...

  8. swiper下滑分页,减少swiper-slide项的时候会出现空白

    修改子项后,先重置当前的页,调用 swiper.slideTo(0); 滚动到初始位置 再调用 swiper.update(); 更新一系列设置就可以了.

  9. VS2010安装MVC3失败的解决方法

    环境:Win 7 x64 原因:在安装MVC3之前,安装过VS2010 SP1,导致MVC3安装,找不到对于的VS2010安装器 vs_setup.msi 问题图片: 解决方法: 一.来自网络的方法 ...

  10. 前端迷思与React.js

    前端迷思与React.js 前端技术这几年蓬勃发展, 这是当时某几个项目需要做前端技术选型时, 相关资料整理, 部分评论引用自社区. 开始吧: 目前, Web 开发技术框架选型为两种的占 80% .这 ...