Moh*_*san 1 linq asp.net datacontext concurrency
我在项目中遇到了一些问题.当我尝试更新实体时,它给了我不同类型的错误.
我从网上读.这些错误是因为
1 - 我从本地创建DataContext的方法获取实体类的Object
并且在update方法中,id不会更新,因为这里在本地创建了另一个DataContext.(即使它没有抛出任何异常)
我找到了许多与此问题相关的文章
1 - 在表中添加时间戳列(在我的项目中不起作用.我试过这个)
一个人说为每个人使用SINGLE DataContext.
我通过创建以下类来完成此操作
public class Factory
{
private static LinqDemoDbDataContext db = null;
public static LinqDemoDbDataContext DB
{
get
{
if (db == null)
db = new LinqDemoDbDataContext();
return db;
}
}
}
public static Student GetStudent(long id)
{
LinqDemoDbDataContext db = Factory.DB;
//LinqDemoDbDataContext db = new LinqDemoDbDataContext();
Student std = (from s in db.Students
where s.ID == id
select s).Single();
return std;
}
public static void UpdateStudent(long studentId, string name, string address)
{
Student std = GetStudent(studentId);
LinqDemoDbDataContext db = Factory.DB;
std.Name = name;
std.Address = address;
db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想更新学生的详细信息.
它解决了我的问题.但现在的问题是.
在基于Web的应用程序中使用上述技术是否很好?
在基于Web的应用程序中使用上述技术是否很好?
不.DataContext不是线程安全的.您不能在处理不同请求的不同线程之间共享1个DataContext.
此外 - 这种模式称为Singleton,而不是Factory