我在我的通用存储库中创建了一个通用方法 AvoidPropertyModify(T entity, Expression< Func< T, DbPropertyEntry>> properties) 来限制实体特定属性的更新。现在,我如何通过给定的确切参数调用我的方法。
public virtual void AvoidPropertyModify(T entity, Expression<Func<T,DbPropertyEntry>> properties)
{
Entities.Entry(entity).Property(properties).IsModified =false;
}
//Calling
public JsonResult Update(ChartOfAccounts coa)
{
AvoidPropertyModify(coa, x => new {x.Code,x.Name }); // Giving syntax Error
}
使用 Expression<Func<TEntity, TProperty>>
表达式:
public virtual void AvoidPropertyModify<TEntity, TProperty>(
TEntity entity,
Expression<Func<TEntity, TProperty>> getProperty)
where TEntity : class
{
var entityEntry = Context.Entry(entity);
var propertyEntry = entityEntry.Property(getProperty);
propertyEntry.IsModified = false;
}
public void Update(Customer customer)
{
AvoidPropertyModify(customer, x => x.Number);
}
获取propertyEntry
的另一种选择就是传递属性名:
var propertyEntry = entityEntry.Property("Number");
我是一名优秀的程序员,十分优秀!