本来需要EF来更新指定的字段,后来在园子里找到了代码

var StateEntry = ((IObjectContextAdapter)dbContext).ObjectContext.ObjectStateManager.GetObjectStateEntry(entity);
StateEntry.SetModifiedProperty(property);

今天看Dos.ORM的源码发现了如何找到Lambda表达式里面的属性值

 public string GetFieldNameByLambda(Expression exprBody)
{
var property = "";
if (exprBody is UnaryExpression)
{
property = ((MemberExpression)((UnaryExpression)exprBody).Operand).Member.Name;
}
else if (exprBody is MemberExpression)
{
property = ((MemberExpression)exprBody).Member.Name;
}
else if (exprBody is ParameterExpression)
{
property = ((ParameterExpression)exprBody).Type.Name;
}
return property;
}

然后综合一下就可以了

 /// <summary>
/// 根据Lambda表达式更新字段
/// </summary>
/// <param name="entity"></param>
/// <param name="property"></param>
/// <returns></returns>
public TEntity UpdateEntityField(TEntity entity, params Expression<Func<TEntity, object>>[] property)
{
IList<string> Pros = new List<string>();
foreach (var item in property)
{
Pros.Add(GetFieldNameByLambda(item.Body));
}
return UpdateEntityField(entity,Pros.ToArray());
}

Entity Framework 通过Lambda表达式更新指定的字段的更多相关文章

  1. EF 更新指定的字段

    假如你有个表,有30个字段,你只想更新其中的1到2个字段的话,就可以用得上这篇文章 作用:类似于我们以前的sql代码 update xxx表 set name='ok',pwd='ok' where ...

  2. Entity Framework 4.1 - Code First 指定外键名称

    Entity Framework 4.1 中,生成外键的方式有以下几种: 1-指定导航属性,会自动生成外键,命名规则为:“表名_主键名”2-默认情况下与导航属性的主键名称相同的字段会自动被标记为外键, ...

  3. C#实体更新指定的字段

    接口类: /// <summary> /// 更新指定字段 /// </summary> /// <param name="entity">实体 ...

  4. EF 使用lambda表达式 更新一对多数据时报错

    1.需求  更新一对多表中的附表数据,表结构如下: 2.思路 个人觉得一个个去对比关联的附表数据是删除还是添加比较麻烦,就直接清空主表关联的附表,然后重新建立关联关系. 3.弊端 如果附表(前提是附表 ...

  5. 在Linq to Entity 中使用lambda表达式来实现Left Join和Join

    1.读取用户和部门两个表的左连接: var sg = db.Users.GroupJoin(db.Departments, u => u.DepartmentId, d => d.Depa ...

  6. 3、Entity Framework Core 3.1入门教程-设定字段属性

    本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解. 视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR ...

  7. Entity Framework 同一个上下文中,如何进行对同一个实体进行指定字段更新

    转自 http://www.cnblogs.com/flyfish2012/archive/2013/03/13/2957125.html 我在上一篇EF更新指定的字段当中介绍了,如何在EF指定字段进 ...

  8. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  9. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

随机推荐

  1. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  2. ES6学习笔记二

    字符串遍历 var str = 'hello'; for(let s of str){console.log(s += ' ')} //h e l l o 字符串查找:添加了include(str,i ...

  3. web自动化工具-Browsersync

    web自动化工具-Browsersync browser-sync才是神器中的神器,和livereload一样支持监听所有文件.可是和livereload简单粗暴的F5刷新相比,browsersync ...

  4. Java内部类与外部类的那些事

    昨天去笔试的时候遇到了Java的内部类的创建方式与访问权限的问题,我不懂,没写,故今天起来特意去试验一下,就有了这篇总结性的文章. Java中的内部类又分为非静态内部类(匿名内部类也是非静态的内部类) ...

  5. [codevs1743]反转卡片

    [codevs1743]反转卡片 试题描述 [dzy493941464|yywyzdzr原创] 小A将N张卡片整齐地排成一排,其中每张卡片上写了1~N的一个整数,每张卡片上的数各不相同. 比如下图是N ...

  6. Python 网络爬虫(图片采集脚本)

    ===============爬虫原理================== 通过Python访问网站,获取网站的HTML代码,通过正则表达式获取特定的img标签中src的图片地址. 之后再访问图片地址 ...

  7. 【原创】node+express+socket搭建一个实时推送应用

    技术背景 Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新. 应用场景: 监控系统:后台硬件热插拔.LED.温度.电压发生变化 即 ...

  8. UIStackView before iOS9.0

    我用的Xcode8.1,同伴用的Xcode7.3.1,其上传了几个XIB文件,导致我这边项目一直爆红,爆红信息:"UIStackView before iOS9.0".如图: 网上 ...

  9. (转)java redis使用之利用jedis实现redis消息队列

    应用场景 最近在公司做项目,需要对聊天内容进行存储,考虑到数据库查询的IO连接数高.连接频繁的因素,决定利用缓存做. 从网上了解到redis可以对所有的内容进行二进制的存储,而java是可以对所有对象 ...

  10. php 封装 知识点

    类由众多对象抽象出来的对象由类实例化出来的 成员变量成员方法成员属性 访问修饰符public 公有的protected 受保护的private 私有的 构造函数1.写法特殊2.执行时间特殊 面向对象的 ...