我正在使用POCO实体。
A有很多这样的关系:
数据库表:
Car-CarTrackType-TrackType
模型实体:
Car - Track
我想插入属于不同TrackTypes的汽车。 是否可以使用EF 4.0创建此类查询以一次性处理插入?
我的意思是:
我在TrackType表中有这样的值:
TrackType
1 Good
2 Bad
3 Weat
我希望我的插件产生如下结果:
Car(Table) CarTrackType(Table)
1 BMW 1 2 (CarId, TrackTypeId)
2 Volvo 1 1
1 3
2 2
2 3
有什么建议吗?
答案 0 :(得分:1)
您可以尝试这样的事情:
using (var context = new MyContext())
{
var truckTypeGood = new TruckType { ID = 1 };
var truckTypeBad = new TruckType { ID = 2 };
var truckTypeWeat = new TruckType { ID = 3 };
context.TruckTypes.Attach(truckTypeGood);
context.TruckTypes.Attach(truckTypeBad);
context.TruckTypes.Attach(truckTypeWeat);
var bmw = new Car {
Name = "BMW",
TruckTypes = new List<TruckType>()
{
truckTypeGood,
truckTypeBad,
truckTypeWeat
} };
context.Cars.AddObject(bmw);
var volvo = new Car {
Name = "Volvo",
TruckTypes = new List<TruckType>()
{
truckTypeBad,
truckTypeWeat
} };
context.Cars.AddObject(volvo);
context.SaveChanges();
}
EF在内部管理多对多连接表,因此您不必关心此表中的记录。除了将卡车类型附加到上下文之外,您还可以在查询中从数据库中获取它们。
答案 1 :(得分:0)
再看一个实现同样事情的例子。当新对象添加到Context时,对象树中所有对象的状态将更改为Added,因此EF会尝试将所有此类对象保存为新记录。