2011-07-17 62 views
1

我創建了一個1:多關係,並且通過ADO.net進行的批量插入不會傳播到我的LINQ-to-SQL數據上下文。C#Linq-to-SQL在Ado.net之後沒有更新插入

例如

TABLE School 
    int schoolId 
    int maxStudents 
    ... 

TABLE Students 
    int studentId 
    int schoolId 
    DateTime birthdate 
    ... 

如果我批量添加,比方說,500名學生到Students表,我的數據上下文不會更新。學生。它只是說.Students.Count()== 0

編輯下面是一個例子:

// Create a Repository 
Repository Repo = new Repository(); 
string[] schoolNames = GetSchoolNames(); 

// Pull in the schools. 
IEnumerable<School> schools = Repo.GetSchools(schoolNames); 
foreach (School school in schools) school.DoSomeDirectDBWork(); 
schoolNames = schools.Select(school => school.name).ToArray(); 
Repo.Dispose(); // Flush/Close/Dispose 

Repo = new Repository(); // New repository, new data context. 
schools = Repo.GetSchools(schoolNames); 
// ** THE SCHOOLS HAVE NO STUDENTS AT THIS POINT IN THE CODE. 
// ** <SAD FACE> 
+1

請在代碼中顯示您要做的插入。 – Yuck

+0

哪個數據庫供應商? – sgtz

+0

@sgtz LINQ-to-SQL = SQL服務器,除非你正在做壞事 –

回答

2

我不知道這是否只是cacheing。如果你已經強迫它加載一個未經過濾的學生,那麼肯定 - 它可能是設置的信任(在加載點是空的)。 DataContext的目的是短暫的;嘗試在插入和重試後創建一個新的。如果這還沒有讀取空表,它應該找到你的數據。

此外,檢查你沒有兩個學生表 - 例如dbo.Students與bluesummers.Students。

+0

你是對的,先生!我堅持父對象的ID(在這種情況下,' .schoolId'),並重新拉了另一個數據上下文,並且計數已更新。 –

+0

奇怪;稍後我又遇到了這個問題,但它是更糟糕的是,我似乎無法得到它來更新庫存對象 - 即使在創建一個全新的數據上下文並嘗試重新提取該對象之後。 –