Сохранение корневого объекта в Entity Framework 6 (но не весь контекст)

Я пытаюсь сохранить корневой объект в Entity Framework, но не все объекты контекста. Кажется, это основная особенность структуры сущностей, и я действительно не понимаю, как это сделать.

Я использую следующий общий DbContext

class GenericContext<T> : DbContext
{
  DbSet<T> Objs;

  SaveChanges( ICollection<T> validatedObjs )
  {
...
  }
}

Мой вопрос:как я могу реализовать метод SaveChanges, чтобы сохранить все validatedObjs, даже те, которые связаны с T?

T является корневым объектом данных винограда.

Все объекты контекста, не связанные с validatedObjs, не должны сохраняться, даже если они находятся в измененном состоянии.

Если T не был изменен, но объект, связанный с T, был изменен, мне нужно сделать сохранение.

Например, если T = Car

class Car
{
   IList<Wheel> wheels;
}

// changing the color of one wheel:
Car car1 = new Car();
Car car2 = new Car();
car1.wheels[0].color = Color.red;
car2.wheels[0].color = Color.Blue;

У нас есть:

Entry( car1 ).EntityState = Unchanged
Entry( car2 ).EntityState = Unchanged
Entry( car1.wheels[0] ).EntityState = Modified
Entry( car2.wheels[0] ).EntityState = Modified

если userValidated содержит car1, но не car2, в базе данных должны быть сохранены только колеса car1.

0 ответов

Другие вопросы по тегам