我在通用存储库中创建了一个通用方法避免属性ProProtyProtyModify(T实体,Expression >属性),以限制实体特定属性的更新。现在,如何通过给定的确切参数调用我的方法。
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");
关于c# - 如何传递DbPropertyEntry的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43417093/