我有兩個表:實體框架:添加使用的項目有
User(id,name,birthday)
和
Teacher(id,id_user,post,specialization)
(Teacher : User)
如何使用包括附加老師?
類似的東西:_db.Users.Include("Teacher").Add(teacher);
我有兩個表:實體框架:添加使用的項目有
User(id,name,birthday)
和
Teacher(id,id_user,post,specialization)
(Teacher : User)
如何使用包括附加老師?
類似的東西:_db.Users.Include("Teacher").Add(teacher);
Include用於「急切加載」數據,不保存。 如果要保存一個新老師和新的用戶對象時,它會是這樣的:
var t = new Teacher();
t.User = new User();
context.Teachers.Add(t)
context.SaveChanges();
如果EF將Teacher設置爲來自User的派生類,則只需創建一個「Teacher()」作爲教師自動成爲'用戶'。如果它們被設置爲關聯表而不是繼承,那麼你的答案是正確的。 – Flater 2013-03-27 13:53:06
如果我寫'var t = new Teacher(); context.Teachers.Add(t) context.SaveChanges();'作爲@Flater說,我只添加表老師或字段從用戶+老師的字段? – user2167382 2013-03-27 14:56:39
如果你已經配置了繼承,**'Teachers'中的每個**行將在'Users'中有相應的行。這是有道理的,因爲'老師'擁有'用戶'的所有屬性(顯然還有其他一些屬性)。您還會注意到'Teachers'表中的ID與'Users'表中使用的ID相同(對於同一對象)。 – Flater 2013-03-27 15:36:37
取決於你如何定義你的模型,如果你有用戶類中教師導航屬性,像這樣:
public class Teacher
{
public int Id {get;set;}
//....
public User User {get;set;}
}
你應該再能夠做到
var teacher = new Teacher(){ User = someuser};
_db.Teacher.Add(teacher);
這將節省老師和用戶。
是教師與用戶一對一的關係? – 2013-03-27 13:38:37
嗯...我真的不明白'Include'在這裏可以提供什麼幫助,它只用於急切的加載。當添加新條目時,您必須將對象添加到適當的實體集合中... – 2013-03-27 13:45:55