定义EF6 DB中存储对象层次结构的正确方法是什么

时间:2016-09-09 15:33:03

标签: c# entity-framework

我查看了MS的EF6教程视频,虽然这个人的声音很舒服,但我并没有学到很多东西,我自己也没有想到。

定义一系列对象(一些属于其他对象)以便从SQL DB进行存储和检索的正确方法是什么。

以下是一些帮助澄清我的问题的例子:

假设我们有3个班级,cardoorwheelCar有一个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表示。

0 个答案:

没有答案