2013-03-27 54 views
0

我有兩個表:實體框架:添加使用的項目有

User(id,name,birthday)

Teacher(id,id_user,post,specialization)

(Teacher : User)

如何使用包括附加老師?

類似的東西:_db.Users.Include("Teacher").Add(teacher);

+0

是教師與用戶一對一的關係? – 2013-03-27 13:38:37

+0

嗯...我真的不明白'Include'在這裏可以提供什麼幫助,它只用於急切的加載。當添加新條目時,您必須將對象添加到適當的實體集合中... – 2013-03-27 13:45:55

回答

1

Include用於「急切加載」數據,不保存。 如果要保存一個新老師和新的用戶對象時,它會是這樣的:

var t = new Teacher(); 
t.User = new User(); 
context.Teachers.Add(t) 
context.SaveChanges(); 
+1

如果EF將Teacher設置爲來自User的派生類,則只需創建一個「Teacher()」作爲教師自動成爲'用戶'。如果它們被設置爲關聯表而不是繼承,那麼你的答案是正確的。 – Flater 2013-03-27 13:53:06

+0

如果我寫'var t = new Teacher(); context.Teachers.Add(t) context.SaveChanges();'作爲@Flater說,我只添加表老師或字段從用戶+老師的字段? – user2167382 2013-03-27 14:56:39

+0

如果你已經配置了繼承,**'Teachers'中的每個**行將在'Users'中有相應的行。這是有道理的,因爲'老師'擁有'用戶'的所有屬性(顯然還有其他一些屬性)。您還會注意到'Teachers'表中的ID與'Users'表中使用的ID相同(對於同一對象)。 – Flater 2013-03-27 15:36:37

1

取決於你如何定義你的模型,如果你有用戶類中教師導航屬性,像這樣:

public class Teacher 
{ 
    public int Id {get;set;} 
    //.... 
    public User User {get;set;} 
} 

你應該再能夠做到

var teacher = new Teacher(){ User = someuser}; 
_db.Teacher.Add(teacher); 

這將節省老師和用戶。