I am thinking of adding a DataContext as a member variable to my aspx.cs code-behind class for executing LinqToSql queries.
Is this thread safe? I am not sure if a new instance of this code-behind class is created for each HTTP request, or if the instance is shared amongst all request threads?
My fear is that I will get 10 simultaneous concurrent http requests that will be using the same database session.
public partial class MyPage : System.Web.UI.Page
{
private DataContext myDB = new DataContext();
protected void MyAction_Click(object sender, EventArgs e)
{
myDB.DoWork();
}
}
The DataContext objects Thread Safety on MSDN is explained like this:
Since your using a private member you have to consider your use in the class. As long as your not launching background threads and sharing the instance with you should have nothing to worry about.
The DataContext should be treated as resource and you may want to consider explicitly disposing of it as part of your class lifecycle. Its a light-weight enough object to consider putting in a using block for every operation too, depending on your use.. see the MSDN description: