Как обновить многие для многих только свойства навигации? - PullRequest
0 голосов
/ 15 августа 2011

я могу обновить некоторые свойства, используя метод

public void Update(T entity, params Expression<Func<T, object>>[] properties) 
{
    _dbSet.Attach(entity); 
    DbEntityEntry<T> entry = _context.Entry(entity);
    foreach (var selector in properties) { entry.Property(selector).IsModified = true; }
}
//repo.Update(entity, e => e.Name, e => e.Description);

, но я хочу обновить свойство навигации только во многих отношениях, например, роль администратора adminrole я хочу обновить adminroleтолько стол

1 Ответ

0 голосов
/ 16 августа 2011

Если вы хотите обновить только отношение, вы можете использовать простые приемы.

Чтобы добавить новую связь между администратором и ролью, вам нужно сделать:

Admin admin = new Admin { Id = adminId };
context.Admins.Attach(admin);
Role role = new Role { Id = roleId };
context.Roles.Attach(role);
// Create new relation on attached entities
admin.Roles.Add(role);
context.SaveChanges();

Чтобы удалить существующую связь между администратором и ролью, вы можете попробовать это:

Admin admin = new Admin { Id = adminId };
Role role = new Role { Id = roleId };
// Simulate existing relation on detached entities
admin.Roles.Add(role);
context.Admins.Attach(admin);
// Remove existing relation on attached entities
admin.Roles.Remove(role);
context.SaveChanges();

В обоих случаях вам просто нужно знать ключи для администратора и роли.

Примечание: это для сценария, где у вас есть реальные многие ко многим (с таблицей соединений, содержащей только ключи)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...