Entity framework EF 4.0具有多对多关系的插入实体
我正在使用POCO实体 A有这样的多对多关系:Entity framework EF 4.0具有多对多关系的插入实体,entity-framework,entity-framework-4,Entity Framework,Entity Framework 4,我正在使用POCO实体 A有这样的多对多关系: Car(Table) CarTrackType(Table) 1 BMW 1 2 (CarId, TrackTypeId) 2 Volvo 1 1 1 3 2 2 2 3 数据库表: Car-CarTrackType-TrackType
Car(Table) CarTrackType(Table)
1 BMW 1 2 (CarId, TrackTypeId)
2 Volvo 1 1
1 3
2 2
2 3
数据库表:
Car-CarTrackType-TrackType
模型实体:
Car - Track
我想插入属于不同轨道类型的车辆。
EF4.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
有什么建议吗?您可以尝试以下方法:
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();
}
使用(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);
宝马=新车{
Name=“宝马”,
TruckTypes=新列表()
{
好的,
卡车型坏,
卡车轮胎
} };
context.Cars.AddObject(宝马);
var沃尔沃=新车{
Name=“沃尔沃”,
TruckTypes=新列表()
{
卡车型坏,
卡车轮胎
} };
context.Cars.AddObject(沃尔沃);
SaveChanges();
}
EF在内部管理多对多联接表,因此您不必关心该表中的记录。除了将卡车类型附加到上下文之外,您还可以在查询中从数据库中获取它们。您可以尝试以下方法:
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();
}
使用(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);
宝马=新车{
Name=“宝马”,
TruckTypes=新列表()
{
好的,
卡车型坏,
卡车轮胎
} };
context.Cars.AddObject(宝马);
var沃尔沃=新车{
Name=“沃尔沃”,
TruckTypes=新列表()
{
卡车型坏,
卡车轮胎
} };
context.Cars.AddObject(沃尔沃);
SaveChanges();
}
EF在内部管理多对多联接表,因此您不必关心该表中的记录。您也可以在查询中从数据库中获取卡车类型,而不是将卡车类型附加到上下文中。请参见另一个实现相同操作的示例。当新对象添加到上下文中时,对象树中所有对象的状态都会更改为“已添加”,因此EF会尝试将所有此类对象保存为新记录。请参阅另一个实现相同操作的示例。当新对象添加到上下文中时,对象树中所有对象的状态将更改为“已添加”,因此EF将尝试将所有此类对象保存为新记录。请再次提供足够的详细信息,以便用户不必访问您的博客。请再次提供足够的详细信息,以便用户不必访问您的博客。