我在项目中遇到了一些问题。当我尝试更新实体时,它会给我不同类型的错误。
我从网上读到了。这些错误是因为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();
}
在这种情况下,我想更新学生的详细信息。
它解决了我的问题。但现在的问题是。在基于Web的应用程序中使用上述技术是否很好?
答案 0 :(得分:7)
在基于Web的应用程序中使用上述技术是否很好?
没有。 DataContext不是线程安全的。您不能在处理不同请求的不同线程之间共享1个DataContext。
此外 - 此模式称为Singleton,而不是Factory