C # Linq-to-SQL не обновляется после вставки Ado.net - PullRequest
1 голос
/ 18 июля 2011

Я создал 1: многие отношения и массовые вставки, которые я делаю через ADO.net, не распространяются на мой контекст данных LINQ-to-SQL.

например

TABLE School
  int schoolId
  int maxStudents
  ...

TABLE Students
  int studentId
  int schoolId
  DateTime birthdate
  ...

Если я добавлю, скажем, 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 Ответ

2 голосов
/ 18 июля 2011

Интересно, это просто кеширование? Если вы заставили его загрузить нефильтрованный набор учеников, то, конечно, - это вполне может быть доверие, которое установлено (пустое в точке загрузки). DataContext должен быть недолговечным; попробуйте создать новый после вставки и повторите попытку. Если он еще не прочитал пустую таблицу, он должен найти ваши данные.

Кроме того, убедитесь, что у вас нет двух таблиц студентов - например, dbo.Students vs bluesummers.Students.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...