Заставить файл linq dbml получить значения базы данных

У меня есть два сайта, один сайт администрирования, где я могу редактировать все значения в базе данных, и общедоступный сайт, который только читает данные из базы данных. Оба сайта имеют идентичные файлы dbml для работы с базами данных. Когда я вставляю новый автомобиль (сайт посвящен автомобилям, поэтому все значения связаны с автомобилем) и его данные, вставленные значения немедленно отображаются на общедоступном сайте... Когда я обновляю данные для автомобиля, значения в базе данных изменяются. немедленно, но общедоступный сайт продолжает отображать старые значения... Я читал, что могу использовать новый экземпляр файла dbml для каждого запроса, чтобы заставить файл dbml читать значения в базе данных...

Я делаю это со следующим кодом в файле кода, куда я помещаю все свои запросы... но это не работает...

 Public Shared AixamReader As FrontstoreAdministrationDataClassesDataContext = New FrontstoreAdministrationDataClassesDataContext

Затем я вызываю AixamReader в каждом запросе...

Есть ли лучший способ заставить файл dbml получать обновленные значения из базы данных?


person Bongo    schedule 22.12.2012    source источник


Ответы (1)


Причина вашей проблемы не в файле DBML. DBML не читает и не запрашивает ваши данные, это просто база для создания классов, которые выполняют реальную работу.

Таким образом, обновление/вставка данных в фактическую базу данных не влияет на ваш файл DBML.

Я думаю, что то, что вы здесь называете файлом DMBL, на самом деле является DataContext.

И да, если вы используете «старый» DataContext для выполнения своих запросов, а тем временем ваши данные обновляются другим процессом, они не будут отображаться в запросах, которые вы выполняете с этим DataContext. Это также известно как «устаревший контекст данных».

Итак, используйте новый DataContext для каждого запроса, и ваша проблема решена. В любом случае, DataContexts довольно легкие и предназначены для использования таким образом (новый для каждой единицы работы).

person Pleun    schedule 23.12.2012
comment
Это то, что я уже читал в других комментариях. Но, видимо, я не понимаю это правильно, потому что я думал, что с кодом, показанным в моем посте, я каждый раз получаю новый экземпляр моего контекста данных. Итак, где и как мне тогда вызвать новый экземпляр моего контекста данных? Спасибо за объяснение. - person Bongo; 27.12.2012
comment
Ну, это Public and Shared, так что, скорее всего, вы используете его повторно? У меня всегда есть локальная переменная с использованием() вокруг нее, но я человек C # - person Pleun; 28.12.2012