2016-04-05 29 views
0

Entity Framework ve Code First ile veritabanı için tablo oluşturma hakkında daha fazla bilgi çalışıyorum. Aşağıda Göçler/Configuration.cs dosyasındaki Tohum yönteminden kısa bir örnek var.Eşleme tablosuna veri eklemek için Tohum yöntemini kullanmak gerekli mi?

Bu iki tablo çoktan çoğa ilişkisine sahip ve Visual Studio ResourceProject adlı yeni bir tablo oluşturur, ancak bu tablo boş ve ben de bu tabloya, diğer tablolar? Ben ResourceProject gibi bir eşleme tablosu ile nokta, veritabanına okuyup yazarken, Resource ve Project tablo kullanmaktır !?

ResourceProject tablo sadece ben Project varlık ve/veya Kaynak varlık üzerinde Projeler koleksiyonu üzerinde Kaynaklar koleksiyonu var sanıyorum Resource kimliğini ve Project

  // Add Projects 
     context.Projects.AddOrUpdate(x => x.Name, 
      new Project() 
      { 
       ID = 1, 
       Name = "Project 1", 
       CompanyID = 3 
      }); 

     // Add Resources 
     context.Resources.AddOrUpdate(x => x.FirstName, 
      new Resource() 
      { 
       ID = 1, 
       FirstName = "Linda", 
       LastName = "West", 
       EmployeeNumber = 1, 
       email = "[email protected]" 
      }); 

cevap

1

içerirler. Örneğin: Yukarıdaki toplama özelliklerinden birine bir öğe eklemek gerekir

public class Project 
{ 
    // Other properties 

    public ICollection<Resource> Resources { get; set; } 
} 

public class Resource 
{ 
    // Other properties 

    public ICollection<Project> Projects { get; set; } 
} 

ResourceProject tablosundaki verileri tohum için:

var project = new Project(); 
project.Resources.Add(new Resource()); 

// OR 

var resource = new Resource(); 
resource.Projects.Add(new Project()); 

diğer olasılık açık ResourceProject var olmasıdır varlık. Bu durumda toplama özelliği hem Kaynak ve Proje varlıklara aynı olacaktır:

public ICollection<ResourceProject> { get; set; } 

aynı geçerlidir - Açıkça verileri tohuma koleksiyonuna bir öğe eklemek gerekiyordu.

** DÜZENLEME **

yorum dayanarak

bir "stenografi" versiyonunu isterseniz böyle varlık tohum olabilir: Cevabınız için

// TODO: set all required properties (EmployeeNumber etc) 
var lindaResource = new Resource { FirstName = "Linda", LastName = "West" }; 
var joeResource = new Resource { FirstName = "Joe", LastName = "East" };  

context.resource.AddOrUpdate(x => x.FirstName, 
    lindaResource, 
    joeResource); 

context.Projects.AddOrUpdate(x => x.Name, 
    new Project() 
    { 
     ID = 1, 
     Name = "Project 1", 
     CompanyID = 3, 
     Resources = new List<Resource> { lindaResource } 
    }, 
    new Project() 
    { 
     ID = 2, 
     Name = "Project 2", 
     CompanyID = 3, 
     Resources = new List<Resource> { lindaResource, joeResource } 
    }); 
+0

Teşekkür! Evet Proje varlığındaki Kaynaklar koleksiyonum ve Kaynak varlıktaki bir Proje koleksiyonum var. –

+0

Sadece merak ediyorum, yukarıdaki tohumumun kodu sadece kısa bir versiyon. Projemde her tablo için 3 satır var. Bu, kodunuz gibi 3 öğe eklemem gerektiği anlamına mı geliyor? Fakat kodunuza tablolara ne ekliyorum? Haritalama masasında ne olacak? –

+0

Cevabınızı yorumunuza dayanarak güncelledim. Tohum yöntemi ikinci elden kısa bir yaklaşımla çalıştığında kaynakların yinelenebileceğinden şüpheleniyorum, bu yüzden kendiniz iki kez kontrol etmelisiniz. – lawst