我在通用存储库中创建了一个通用方法避免属性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/

10-16 09:03