2017-04-14 4 views
2

Ich habe eine gemeinsame Methode AvoidPropertyModify (T-Entität, Ausdruck < Func < T, DbPropertyEntry >> Eigenschaften) in meinem generischen Repository, um die Aktualisierung für die Entität spezifische Eigenschaft zu beschränken. Nun, wie kann ich meine Methode mit genauen Parametern aufrufen?Wie übergeben Sie den Wert für 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 
} 

Antwort

1

Verwendung Expression<Func<TEntity, TProperty>> Ausdruck:

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); 
} 

Eine weitere Option propertyEntry zu erhalten, ist eine Immobilie zu übergeben:

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

Dank @Ilya Chumakov – sebu

Verwandte Themen