В WebService с linq-To-sql может ли datacontext быть статическим полем? - PullRequest
1 голос
/ 24 февраля 2009

Я создаю webserivce, который будет использовать Linq-To-Sql для выполнения запросов только на выборку. В этом отношении было бы приемлемым иметь DataContext как статическое поле / свойство, поскольку операции никогда не будут такими, которые изменяют базу данных или отслеживают изменения объекта?

Если нет, то какие альтернативные подходы подойдут?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2009

Я бы воссоздал текст данных при каждом вызове метода, заключенный в блок using. Это поможет убедиться, что объекты, созданные в результате операции, будут удалены, и уменьшит объем используемой памяти. Так как объект сериализуется для отправки обратно, не должно быть необходимости хранить текст данных дольше, чем при вызове. Сам контекст данных не является особо тяжелым объектом, и его не следует создавать заново по мере необходимости. Это действительно то, как это было предназначено для использования - в качестве единицы рабочего объекта.

2 голосов
/ 24 февраля 2009

DataContext не является потокобезопасным, поэтому его сохранение в статическом виде не будет хорошей идеей.

В действительности DataContext не будет существовать очень долго, просто создайте экземпляр во время обработки запроса.

...