2011-07-11 13 views
1

私はPOCOエンティティを使用しています。EF 4.0多対多の関係を持つエンティティを挿入する

DBテーブル:

Car-CarTrackType-TrackType 

モデルエンティティ:

Car - Track 

私は魔女が異なるTrackTypes所属車を挿入したい

Aは、そのような多くの関係に多くを持っています。 EF 4.0では、このようなクエリを作成して一度に挿入することは可能ですか?

は、私が何を意味:

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 

任意の提案

私はTrackTypeテーブルのような値がありますか?

答えて

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は、このテーブル内のレコードを気にする必要はありませんので、多対多のは、内部テーブルに参加し管理しています。コンテクストにトラックタイプを取り付ける代わりに、クエリーのDBから取り出すこともできます。

0

同じことをするもう1つの例を参照してください。新しいオブジェクトがContextに追加されると、オブジェクトツリー内のすべてのオブジェクトの状態がAddedに変更されるため、EFはすべてのオブジェクトを新しいレコードとして保存しようとします。

+0

また、[編集]をクリックして、ユーザーがブログに行かなくても十分な詳細を提供してください。 – Will

関連する問題