我可以动态更新dataContext吗?

时间:2011-03-04 16:15:28

标签: c# linq linq-to-sql datacontext

我使用DataContexts进行90%的数据访问。但是,例如,如果User1修改记录而User2查询DataContext,则他不会看到修改。因此,每次访问数据时(每次使用LINQ to SQL之前),我都会重新创建DataContext。

必须有更好的方法来查询表格!要么我必须让DataContexts与表同步,要么我必须找到直接查询表的方法。

任何帮助将不胜感激!

谢谢!

3 个答案:

答案 0 :(得分:3)

  

所以我每次都重新创建我的DataContext   我访问数据的时间(在每个LINQ之前)   到SQL使用)。必须有一个更好的   查询表的方法!

不,没有更好的方法,也没有必要。

创建DataContext相对便宜,唯一昂贵的部分是Connection,它由ConnectionPool处理。

因此,您可以根据查询(它们是真正的费用)和替代的缓存结果集来思考和推理。

答案 1 :(得分:2)

您可以按照以下博客文章清除Linq2Sql中的缓存:

http://blog.robustsoftware.co.uk/2008/11/clearing-cache-of-linq-to-sql.html

作者还将代码放在我们的扩展方法中:)

注意:您可能需要更改方法签名中的Context。完成此操作后,您可以调用db.ClearCache();这一切都很可爱......嗯。

我认为还有另一种获取数据的方法,但不记得我在哪里找到了这些信息所以可能需要一段时间,如果我发现它会对这个答案发表评论。

HTH,

斯图

答案 2 :(得分:2)

我相信您可能会误解DataContext的性质。

在大多数情况下,您需要使用Using语句创建DataContext的实例。在Using语句中,您应该继续为CRUD操作执行LINQ查询。

using (YourDataContext ctx = new YourDataContext()) {
    someTable stObj = (from st in ctx.someTable
                       select st).FirstOrDefault();

    stObj.SomeColumn = 1001;

    ctx.SaveChanges();
}

保存上面上面的DataContext后打开的任何其他DataContext将看到对SomeColumn所做的更改。