首页 > 代码库 > Entity Framework 通过Lambda表达式更新指定的字段
Entity Framework 通过Lambda表达式更新指定的字段
本来需要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表达式更新指定的字段
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。