У меня есть две таблицы (Knicks и Knacks) и представление, которое объединяет две таблицы (PaddyWhacks). Таблицы имеют следующие поля:
Knicks.key, Knicks.data1
Knacks.fkey, Knacks.data2
Итак, представление содержит:
PaddyWhacks.key, PaddyWhacks.data1, PaddyWhacks.data2
Я использую LINQ to SQL, чтобы получить полное представление как IQueryable, и все выглядит хорошо. После этого я беру строку из Knicks и обновляю ее:
Knick k = db.Knicks.Single(row => row.data1 == 5);
k.data1 = 6;
db.SubmitChanges();
Я знаю, что обновление корректно, потому что если я выполню Count () для Knicks, где data1 == 5, результат изменится (и я могу заглянуть в базу данных и увидеть изменения). Однако, если я снова получу Paddywhacks, используя:
IQueryable<PaddyWhack> rows = from row in db.PaddyWhacks select row;
Соответствующее значение data1 равно 5.
Приложение работает на размещенном веб-сервере, и если я подожду достаточно долго и вернусь, чтобы повторить попытку, я увижу обновленное значение в представлении IQueryable. Я предполагаю, что что-то кэшируется, и, возможно, LINQ не вернется обратно в базу данных, чтобы получить данные снова. Есть ли какая-либо функция LINQ или SQL Server, о которой мне нужно знать, чтобы решить проблему?