2013-08-03 4817 views
1

我有以下數據庫表:TeachersSubjectsTeachersSubjectsEF父子插入

所有主鍵都正確設置。

我有一個網頁,並希望有一個快速入口,我可以放在一個教師的名字和她將教學的科目列表。

我正在使用VS2012 Express和實體框架。

NorthwindCustEntities context = new NorthwindCustEntities(); 

    Teacher t1 = new Teacher() { Name = "Jane Smith" }; 

    Subject s1 = new Subject() { Name = "Math" }; 
    Subject s2 = new Subject() { Name = "Science" }; 

    context.Subjects.Add(s1); 
    context.Subjects.Add(s2); 
    context.Teachers.Add(t1); 

    context.SaveChanges(); 

那麼,如何從一次點擊快速入口頁面到數據庫並傳播所有三個表格?

回答

1

使用下面的代碼:

NorthwindCustEntities context = new NorthwindCustEntities(); 

Teacher t1 = new Teacher() { Name = "Jane Smith" }; 

Subject s1 = new Subject() { Name = "Math" }; 
Subject s2 = new Subject() { Name = "Science" }; 

context.Subjects.Add(s1); 
context.Subjects.Add(s2); 

t1.Subjects.Add(s1); 
t1.Subjects.Add(s2); 
context.Teachers.Add(t1); 

context.SaveChanges(); 
+0

這是沒有必要添加's1'和's2'到'context.Subjects',而你將它們添加到't1.Subjects' –

1

使用此:

// think we have a 
string teacherName; 
// and a list of 
string[] subjectNames; 
// then: 

NorthwindCustEntities context = new NorthwindCustEntities(); 

Teacher t1 = new Teacher() { Name = teacherName }; 
t1.Subjects = new List<Subject>(); 
foreach(var subject in subjectNames) { 
    t1.Subjects.Add(new Subject() { Name = subject }); 
} 

context.Teachers.Add(t1); 

context.SaveChanges(); 

或您的例子:

NorthwindCustEntities context = new NorthwindCustEntities(); 

Teacher t1 = new Teacher() { Name = "Jane Smith" }; 

Subject s1 = new Subject() { Name = "Math" }; 
Subject s2 = new Subject() { Name = "Science" }; 

t1.Subjects.Add(s1); 
t1.Subjects.Add(s2); 
context.Teachers.Add(t1); 

context.SaveChanges();