2011-02-28 63 views
1

假設我有一個Company表和一個Division表。每個部門都有一個公司的外鍵,所以每個公司可以有很多分部的子女。LINQ to SQL:如果我將一個對象添加到Linq Entity set中,它不會被添加

如果我用Linq-to-sql獲取公司對象,我可以訪問它的Divisions屬性,一個Division對象的實體集。如果我添加一個新的分區對象,並調用SubmitChanges()不會自動進入分區表或我被迫調用InsertOnSubmit?

回答

3

有多種方法可以使用LINQ to SQL將對象插入到數據庫中。例如:

db.Divisions.InsertOnSubmit(new Division() 
{ 
    Company = db.Company.Single(c => c.Id == 1), 
    // other properties 
}); 

db.SubmitChanges(); 

或者:

var company = db.Company.Single(c => c.Id == 1); 

company.Divisions.Add(new Division() 
{ 
    // other properties 
}); 

db.SubmitChanges(); 

正如你所看到的,你可以使用數據上下文Table<Division> Divisions財產InsertOnSubmit,但你也可以使用EntitySet<Division> Divisions屬性的Add方法在Company實體上。他們都做 - 大致相同。後一種方法的好處在於,您不需要將公司「鏈接」到新的部門,因爲LINQ to SQL可以爲您解決這個問題。

我希望這能回答你的問題。

+0

是的,我明白我在哪裏錯了。這些更改只發生在一個包裝器上,而不是包裝本身。 – 2011-02-28 13:29:11

+0

@Pleun:我很抱歉,但你的陳述是錯誤的。使用LINQ to SQL調用'Add'後,您不需要'InsertOnSubmit'。請嘗試一下。 – Steven 2011-02-28 15:41:34

+1

對不起,我的錯誤,讀得太快.... – Pleun 2011-02-28 16:08:52

相關問題