我尝试在实体框架中保存根对象,但不是所有上下文对象。它似乎是实体框架的基本特征,我真的不知道该怎么做。
我使用以下通用DbContext
class GenericContext<T> : DbContext
{
DbSet<T> Objs;
SaveChanges( ICollection<T> validatedObjs )
{
...
}
}
我的问题: 如何实现SaveChanges方法以保存所有validatedObj甚至与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的轮子必须保存在数据库中。