2011-07-17 9 views
1

ADO.netを使用して1:多数の関係と一括挿入を作成しましたが、LINQ-SQLデータコンテキストに伝播しません。Ado.netの挿入後にC#Linq-to-SQLが更新されない

TABLE School 
    int schoolId 
    int maxStudents 
    ... 

TABLE Students 
    int studentId 
    int schoolId 
    DateTime birthdate 
    ... 

私はStudentsテーブルに、たとえば、500人の学生を一括追加した場合、私のデータコンテキストが.Studentsを更新しません。それはちょうど.Students.Count()== 0

はEDIT言うここでは例です:

// 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は短命であることを意図しています。挿入後に新しいものを作成して再試行してください。空のテーブルをまだ読んでいない場合は、データを見つける必要があります。

さらに、2つの生徒表がないことを確認してください(例:dbo.Students vs bluesummers.Students)。

+0

あなたは正しいです、サー!私は親オブジェクトのID(この場合は「 .schoolId')を保持し、別のデータコンテキストで学校を再引っ張り、カウントが更新されました –

+0

奇妙なことですが、少し後にこの問題に再び遭遇しました。非常に悪いです。まったく新しいデータコンテキストを作成し、 ''オブジェクトを再プッシュしようとしても、ストックオブジェクトを更新することはできません。 –

関連する問題