我使用DataContexts进行90%的数据访问。但是,例如,如果User1修改记录而User2查询DataContext,则他不会看到修改。因此,每次访问数据时(每次使用LINQ to SQL之前),我都会重新创建DataContext。
必须有更好的方法来查询表格!要么我必须让DataContexts与表同步,要么我必须找到直接查询表的方法。
任何帮助将不胜感激!
谢谢!
答案 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所做的更改。