C# 我可以有一个动态更新的dataContext吗?
我90%的数据访问都使用DataContext。但是,例如,如果User1修改一条记录,User2查询DataContext,他将看不到修改。因此,每次访问数据时(每次使用LINQtoSQL之前),我都会重新创建DataContext 一定有更好的方法查询表!要么我必须让DataContext与表同步,要么我必须找到一种直接查询表的方法 任何帮助都将不胜感激C# 我可以有一个动态更新的dataContext吗?,c#,linq,linq-to-sql,datacontext,C#,Linq,Linq To Sql,Datacontext,我90%的数据访问都使用DataContext。但是,例如,如果User1修改一条记录,User2查询DataContext,他将看不到修改。因此,每次访问数据时(每次使用LINQtoSQL之前),我都会重新创建DataContext 一定有更好的方法查询表!要么我必须让DataContext与表同步,要么我必须找到一种直接查询表的方法 任何帮助都将不胜感激 谢谢大家! 您可以根据以下博文清除Linq2Sql中的缓存: 作者还为我们将代码放入扩展方法中:) 注意:您可能需要更改方法签名中的上下
谢谢大家! 您可以根据以下博文清除Linq2Sql中的缓存: 作者还为我们将代码放入扩展方法中:) 注意:您可能需要更改方法签名中的上下文。完成后,您可以调用db.ClearCache();一切都会很美好。。。tm 我认为有另一种获取数据的方法,但不记得我在哪里找到了信息,因此可能需要一段时间,如果我找到了,我会对这个答案发表评论 嗯, 斯图 所以我每天都重新创建我的DataContext 我访问数据的时间(在每个LINQ之前) (使用SQL)。一定有更好的办法 查询表格的方法 不,没有更好的方法,也没有必要 创建DataContext相对便宜,唯一昂贵的部分是由ConnectionPool处理的连接
因此,您可以根据查询(它们是真正的费用)和缓存结果集来思考和推理 我相信您可能误解了数据上下文的性质 在大多数情况下,您需要使用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将看到对某个列所做的更改。如果我读得正确,这是SQL中由来已久的多用户问题,与Linq2Sql没有任何(特殊)关系。那么您采取什么方法?您是否每次都重新创建上下文?或者使用不同的方式查询数据?是的,每次都重新创建DataContext。不要把它看作是一种必须全天候直播的连接,因为它不是。