2011-07-07 22 views
2

MSSQLを使用してリレーショナルデータベースをセットアップしましたが、Entity Frameworkを使用して話していますが、いくつかの問題があります。 (これは私の最初のEFプロジェクトです)。私が使用してMachinesテーブルとContactsテーブルの両方にデータを挿入することができるよエンティティフレームワークで1:M - > M:1を使用している問題

_db.AddToMachines(new Machine { MachineModelId = 0, Owner = "Test", SerialNo = "34242341" }); 
_db.SaveChanges(); 

しかし、どのように、私はマシンに連絡先を追加することができますに?

Small segment of the database

EF

+0

EDMモデルはどのように見えますか? –

+0

@Enrico Campidoglio:新しい画像で質問を更新しました。 – Sindre

答えて

3

あなたMachines実体はContactsと呼ばれるナビゲーションプロパティおよびその逆を持っている必要があります。これらのプロパティにオブジェクトを追加するだけです。
例:

var machine = new Machine { MachineModelId = 0, 
          Owner = "Test", SerialNo = "34242341" }; 
var contact = new Contact { ... }; 
machine.Contacts.Add(contact); 

_db.AddToMachines(machine); 
_db.SaveChanges(); 

これはMachinesテーブルに新しいエントリ、Contactsテーブルに新しいエントリと他の二つのテーブルに新しいエントリを参照MachineContactsテーブルに新しいエントリを挿入しなければなりません。

+0

EDMモデルには、 'Machine'と' Contact'エンティティの両方に対するM:1の関係を持つ 'MappingContacts'マッピングテーブル用のエンティティが含まれていることがあります。その場合、 'Machine.MachineContacts'と' Contact.MachineContacts'ナビゲーションプロパティの両方に新しい 'MachineContact'オブジェクトを追加する必要があります。 –

+0

@Enrico:OPで示されるような純粋なマッピングテーブルは、通常、OOP世界では必要ないので、エンティティとして作成されないため、これはほとんどありません。 –

+0

@Sindre:「何も追加できない」という意味ですか?何が起こるのですか? –

関連する問題