我查看了MS的EF6教程视频,虽然这个人的声音很舒服,但我并没有学到很多东西,我自己也没有想到。
定义一系列对象(一些属于其他对象)以便从SQL DB进行存储和检索的正确方法是什么。
以下是一些帮助澄清我的问题的例子:
假设我们有3个班级,car
,door
和wheel
。 Car
有一个doors
集合和一个wheels
集合。
方法1:
DBContext db = new DBContext();
Car car = new Car();
car.Doors.Add(new Door(){ blah blah });
car Wheels.Add(new Wheel(){ blah blah});
db.Cars.Add(car);
方法2:
DBContext db = new DBContext();
Car car = new Car();
Door door = new Door(){ vehicle = car, blah blah };
Wheel wheel = new Wheel(){ vehicle = car, blah blah };
db.Cars.Add(car);
db.Doors.Add(door);
db.Wheels.Add(wheel);
方法3:
DBContext db = new DBContext();
Car car = new Car();
db.Cars.Add(car);
db.SaveChanges();
Door door = new Door(){ carId= db.cars.Find(*index*), blah blah };
db.Doors.Add(door);
db.SaveChanges();
Wheel wheel = new Wheel(){ vehicle = db.cars.Find(*index*), blah blah };
db.Wheels.Add(wheel);
db.SaveChanges();
我意识到方法3看起来很疯狂,但你明白了。
我问这个问题主要是因为我收到了这个错误:
Entities in 'DBContext.Beds' participate in the 'LocationBed' relationship. 0 related 'Location' were found. 1 'Location' is expected.
..而且因为我真的不习惯模型优先方法,所以我无法将模型视为数据库的1-1表示。