2016-04-13 20 views
0

Çok basit bir sorum var. Ben ASP.NET MVC için yeni ve kod-ilk tekniği izlerken ilişkileri hakkında çok fazla karışık.Asp.net mvc'de bir kayıt için birden çok yabancı anahtar ilişkisi, kod ilk

İki model sınıfım var. Ben bir kişi birçok kursu olabilir tanımlamak istiyorum. Ben kişi ve

public class ModelJoin 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int ModelJoinId { get; set; } 

    [ForeignKey("Person")] 
    public int PersonId { get; set; } 
    public virtual Person Person{ get; set; } 

    //One to many relationships 
    public virtual ICollection<Course> Courses{ get; set; } 
} 

Yani modeli sadece iki özelliklere sahip olacak katılmak elbette kimliklerini tekrarlanan kimliği içeren bir başka model sınıf oluşturulmuş bir ilişki yapabilmek için

public class Person 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int PersonId { get; set; } 
} 

public class Course 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int CourseId { get; set; } 

    // public virtual ICollection<Course> Courses{ get; set; } 

    /* I removed above line from model because it was not creating any Course Field in Db table of Person and added a third table */ 
} 

. Bunu en iyi şekilde nasıl gerçekleştirdiğimizi sormak istiyorum.

Kursların değeri her zaman boş olacaktır, böylece herhangi bir ders ekleyemeyiz. Kodda nereye bir nesne atayacağız?

Yığın akışında çok fazla soru var ama hiç kimse bunu sıfırdan açıklıyor.

Yabancı anahtarlı güncelleme silme tabloları eklemek için herhangi bir eğitici var mı?

Herhangi bir yardım için teşekkür ederiz.

enter image description here

+0

Bir kişi çok sayıda kursa sahip olabilirse, o zaman 'Person' tablonun ders alanı olmamalıdır. PersonId ve CourseId'yi saklamak için yeni bir tablo bulunmalıdır. – Hendry

cevap

1

ders toplama Person sınıfta olmalı, şunu deneyin:

public class Person 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int PersonId { get; set; } 

    public virtual ICollection<Course> Courses { get; set; } 
} 

public class Course 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int CourseId { get; set; } 
} 

Yani, örneğin, bir kursla bir kişi eklemek istiyorum.

var person = new Person(); 
var courses = new List<Course>(); 
courses.Add(new Course()); 
person.Courses = courses; 
dbContext.Persons.Add(person); 
dbContext.SaveChanges(); 
+0

Person.Courses boştur, – Charlie

+0

@ Charlie düzenlenmesine izin verilmez. – Hendry