2010-03-24 4 views
1

Я собираюсь добавить DataContext как переменную-член в мой класс aspx.cs-code-behind для выполнения запросов LinqToSql.Безопасность ASP.NET в коде aspx.cs за файлом

Является ли эта нить безопасной? Я не уверен, что для каждого HTTP-запроса создается новый экземпляр этого класса для кода, или если экземпляр разделяется между всеми потоками запросов?

Мой страх в том, что я получу 10 одновременных одновременных HTTP-запросов, которые будут использовать тот же сеанс базы данных.

 
public partial class MyPage : System.Web.UI.Page 
{ 
    private DataContext myDB = new DataContext(); 

    protected void MyAction_Click(object sender, EventArgs e) 
    { 
     myDB.DoWork(); 
    } 
} 
+0

Это помогает помнить, что ваш класс MyPage создается при каждом запросе, и каждый новый экземпляр MyPage имеет свою собственную копию частной переменной DataContext. – Juliet

ответ

4

DataContext объекты безопасности Резьба на MSDN объясняется следующим образом:

Любые открытые (Shared в Visual Basic) члены этого типа являются потокобезопасными. Любые члены экземпляра не гарантируют безопасность потоков.

С вашего использования с частным членом вы должны учитывать свое использование в классе. До тех пор, пока вы не запускаете фоновые потоки и не делитесь с вами экземпляром, вам не о чем беспокоиться.

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

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

+0

Отличный ответ! Я видел ваши ответы на другие вопросы и думаю, что вы умный ум. Спасибо, что нашли время, чтобы ответить на мой вопрос. –

+0

Ничего себе! Спасибо, проверка одобрения находится по почте. –

1

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

Не беспокойтесь о проблемах с потоками.

Смежные вопросы