2011-05-20 61 views
4

我有以下使用LINQ麻煩SQL實體:LINQ to SQL的麻煩

// Context is DataContext that was auto genereted when i create my .dbml file 

var cl = Context.Classes.ToArray(); 
var rm = Context.Rooms.ToArray(); 

List<DaySchedule> s = new List<DaySchedule>(); 
s.Add(new DaySchedule() 
    { 
     Class = cl[0], 
     DayOfWeek = 0, 
     Pair = 1, 
     Room = rm[0] 
    }); 
Context.SubmitChanges(); 

如此,經過 「的SubmitChanges」 新DaySchedules將被保存到數據庫。但我沒有調用InsertOnSubmit函數,我不想保存這個DaySchedule。

BTW, 如果我將使用下面的代碼:

s.Add(new Acceron.University.DBAccess.DaySchedule() 
    { 
     Class_id = cl[0].Class_ID, 
     DayOfWeek = 0, 
     Pair = 1, 
     Room_id = rm[0].Room_ID 
    }); 

它不會被自動保存到數據庫。

你能解釋一下它是錯誤還是功能,我該如何解決它?

+0

第一個代碼片段甚至不能工作,因爲你使用'c'和'r',我懷疑*應該是'cl'和'rm'。 – 2011-05-20 08:42:33

+0

當然,sry在帖子中更改了 – 2011-05-20 08:45:05

回答

4

它是由設計。 Class和Room是上下文感知實體,因爲它們是針對上下文進行查詢的。只要上下文感知實體添加子項,它就會自動將這些更改排隊到上下文並將其標記爲已插入。所以你不能在沒有自動排隊功能的情況下添加新的實體。我強烈建議您稍後不要致電保存更改。

+0

+1如果您不想保存更改,請勿調用SaveChanges。 – 2011-05-23 01:45:46