ASP.NET请求...... Linq DataContext有什么用处?

时间:2010-03-05 16:25:14

标签: c# .net asp.net linq-to-sql

很抱歉,如果这是重复的话。请指出适当的问题,如果是这样,但我找不到我想要的内容。

所以我在ASP.NET Web应用程序中使用Linq to SQL datacontext进行实体跟踪和持久化。它适用于一次没有大量用户的Intranet应用程序。现在我将datacontext存储在会话状态,这让我觉得很脏!看起来我总是需要上下文,因为我需要保留对正在修改的实体的更改跟踪。我们所有的屏幕都有一个Save按钮,然后在DataContext上调用SubmitChanges()并在内存中保留所有挂起的更改。

我应该存储DataContext吗?我应该在每个请求结束时处理它,然后以某种方式重新创建它并获得挂起的更改吗?如果我每次都应该重新创建它,我不明白上下文如何在每次请求没有大量冗余数据库命中的情况下知道发生了什么变化。

2 个答案:

答案 0 :(得分:4)

首先,我要说完全停止在Session中。特别是如果您没有很多用户,只需在需要时加载数据。

根本不存储数据上下文。只需在需要时在每个页面上创建一个新的。当他们点击“保存”按钮时,重新创建数据上下文,从数据库加载对象,根据表单输入进行必要的更改,然后将其保存回数据库。它应该只是每个对象的两个数据库命中,一个加载,然后一个保存回来。

答案 1 :(得分:3)

我认为数据上下文的最佳实践是工作单元模式,其中工作单元的范围是您正在服务的单个请求。每次需要进行更改时,实例化新的数据上下文。如果您担心覆盖绘制上一页后所做的更改,请考虑在隐藏字段中使用并保留版本/时间戳,并在检索要更新的实体时检查从数据上下文返回的内容。