Как обновить модель и ее дочерний элемент, используя присоединение с конкретными объектами?
Я использую шаблон хранилища, который выглядит следующим образом со старой структурой сущности:
public User UpdateUser(User user, IEnumerable<System.Linq.Expressions.Expression<Func<User, object>>> properties)
{
if (user.UserId == 0)
{
db.Users.Attach(user);
}
else
{
db.Users.Attach(user);
ObjectStateEntry entry = db.ObjectStateManager.GetObjectStateEntry(user);
foreach (var selector in properties)
{
string propertyName = PropertyToString(selector.Body);
entry.SetModifiedProperty(propertyName);
}
}
context.SaveChanges();
return user;
}
private static string PropertyToString(Expression selector)
{
switch (selector.NodeType)
{
case ExpressionType.MemberAccess:
return ((selector as MemberExpression).Member as PropertyInfo).Name;
break;
case ExpressionType.Convert:
//Needed to recognize bool datatype
return (((selector as UnaryExpression).Operand as MemberExpression).Member as PropertyInfo).Name;
break;
}
throw new InvalidOperationException();
}
Но теперь code-first не поддерживает db.ObjectStateManager
. Как запустить обновление определенных свойств для отдельных объектов?