2017-04-14 52 views
2

我在我的通用存儲庫中創建了一個通用方法AvoidPropertyModify(T實體,表達式< Func < T,DbPropertyEntry >>屬性),以限制實體特定屬性的更新。現在,如何通過給定確切的參數來調用我的方法。如何傳遞DbPropertyEntry的值?

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 
} 

回答

1

使用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"); 
+0

感謝@Ilya Chumakov – sebu