2017-04-14 3 views
2

엔티티의 특정 속성에 대한 업데이트를 제한하기 위해 AvoidPropertyModify (T 엔티티, 표현식 < Func < T, DbPropertyEntry >> properties)를 제네릭 리포지토리에 만들었습니다. 자, 어떻게 정확한 매개 변수를 지정하여 내 메서드를 호출 할 수 있습니다.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>> 표현 :

var propertyEntry = entityEntry.Property("Number"); 
+0

감사 @Ilya Chumakov :

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를 얻을 수는 속성 이름을 전달하는 것입니다 – sebu