2016-03-21 14 views
0

Sorum şu: Üçüncü taraf bir veri nesnesini varlık çerçevesini kullanarak kolayca tohumlayabilirsiniz. Her zaman kullandıklarımda, yabancı anahtar işlerin iki katmanını biliyorum, üç olacak mı?Entity Framework, Yabancı Tuşlarda Tohumlama

Veri yapığım aşağıdaki gibidir.

Üst Düzey Tablo

Tablo Tek - Şirket (Bir Alanları çoğuna) - "liste" Alanları

Tablo İki - Alanları (birçok Öğelerime One) - "liste" Öğeler

Tablo Üç - Öğeler (Ma One) için ny - ItemID Şu Şirket ve Alanlar) arasında iki düzeyde (sözdizimi çalışıyor:

var NewCompany = new Company() { 

     Areas = new List<Area>(){ 

     Areaid = 0 

    } 
} 
      _context.Company.Add(NewCompany); 
      _context.Areas.AddRange(NewCompany.Areas); 

soru Alanları listesi olarak üçüncü bir tablo ekleyerek aşağıdakileri elde etmek nasıl. Eğer veritabanında iyi kısıtlamayı belirtilen ve doğru o zaman relavant varlık koleksiyonu ile ilgili varlıklar (Alan & Öğeler) eklemek gerek olmaz modelini yapılandırılmış İdeal eğer

var NewCompany = new Company() { 

     Areas = new List<Area>(){ 

     Items = new List<Items>(){ 
     itemId= 1 
     } 

    } 
} 
      _context.Company.Add(NewCompany); 
      _context.Areas.AddRange(NewCompany.Areas); 
      _context.Areas.AddRange(NewCompany.Areas.Items); 
+0

Lütfen etiketleri doğru bir şekilde kullanın. Bu soru sq-server ile ilgili değil. Teşekkürler. – FLICKER

cevap

0

.

var NewCompany = new Company() { 
     Areas = new List<Area>(){ 
     Areaid = 0 
     Items = new List<Item>(){ 
      new Item(1), 
      new Item(2) 
      ... 
      ... 
     } 
    } 
} 

//just add newCompany instance to the entity collection rest should be automatically taken care. 
_context.Company.Add(NewCompany); 
//no need to write below statement. 
//_context.Areas.AddRange(NewCompany.Areas); 
+0

Siz haktasınız. Her zaman yukarıda yaptığım gibi yapman gerektiğini öneren bir öğretici çalışıyordum. Ekstra ekler kaldırılması ve yabancı tuşlara sahip doğru çalıştı! – Caz1224