Свежие данные против локально кэшированных данных в LINQ to SQL - PullRequest
1 голос
/ 07 декабря 2011

Хорошо, у меня установлена ​​система LINQ to SQL, настроенная на службу WCF.Мое приложение содержит ссылку на этот сервис, который он использует для сбора данных из базы данных SQL.Я использую объект DataContext, сгенерированный SQLMetal.exe.

У меня есть две коллекции сущностей в моем объекте DataContext: клиенты и группы.Каждый клиент содержит поле, в котором указано, к каким группам он принадлежит (список идентификаторов групп, разделенных запятыми).

В приложении у меня есть таблица клиентов.Если я выбираю один и нажимаю кнопку, во второй таблице отображаются сведения о группах, в которые входит клиент.

Вот вопрос: когда я нажимаю эту кнопку, я иду в базу данных для групп каждыйвремя, или я должен загрузить группы, когда приложение запускается и просеять через них?Последнее будет быстрее, но я хочу одновременное решение.

Второй вопрос (я знаю, что не должно быть двух на самом деле, но я только что понял, что может быть смущен в этом вопросе): когда я запускаюЗапрос LINQ для коллекции в моем объекте DataContext, я получаю последние данные базы данных?

Спасибо.

Ответы [ 3 ]

1 голос
/ 07 декабря 2011

Как и в большинстве реальных вопросов производительности ... это зависит.Лучший способ определить это - написать свое приложение с тем, что «правильно», а затем, если производительность вызывает беспокойство, измерить и изменить соответствующим образом.

Да, вы будете получать самую последнюю информацию о базе данных.

1 голос
/ 07 декабря 2011

Если загрузка групп не занимает много времени, не кешируйте. Преждевременная оптимизация никогда не бывает хорошей идеей. Просто имейте в виду, что вы, возможно, захотите, и убедитесь, что ваша коллекция групп хорошо отделена, оптимизируя, если нужно, будет относительно просто.

1 голос
/ 07 декабря 2011

По второму вопросу - да, каждый запрос к LINQ to SQL приводит к выражению SQL, выдаваемому в резервную базу данных.И чтобы уточнить это каждый раз, чтобы попытаться перечислить оператор LINQ.Я не имею в виду, что каждый оператор LINQ отправляется в базу данных немедленно, что, конечно, не так.

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

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