Entity framework EF 4.0具有多对多关系的插入实体

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

我正在使用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 - 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将尝试将所有此类对象保存为新记录。

请再次提供足够的详细信息,以便用户不必访问您的博客。请再次提供足够的详细信息,以便用户不必访问您的博客。