Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以有一个动态更新的dataContext吗?_C#_Linq_Linq To Sql_Datacontext - Fatal编程技术网

C# 我可以有一个动态更新的dataContext吗?

C# 我可以有一个动态更新的dataContext吗?,c#,linq,linq-to-sql,datacontext,C#,Linq,Linq To Sql,Datacontext,我90%的数据访问都使用DataContext。但是,例如,如果User1修改一条记录,User2查询DataContext,他将看不到修改。因此,每次访问数据时(每次使用LINQtoSQL之前),我都会重新创建DataContext 一定有更好的方法查询表!要么我必须让DataContext与表同步,要么我必须找到一种直接查询表的方法 任何帮助都将不胜感激 谢谢大家! 您可以根据以下博文清除Linq2Sql中的缓存: 作者还为我们将代码放入扩展方法中:) 注意:您可能需要更改方法签名中的上下

我90%的数据访问都使用DataContext。但是,例如,如果User1修改一条记录,User2查询DataContext,他将看不到修改。因此,每次访问数据时(每次使用LINQtoSQL之前),我都会重新创建DataContext

一定有更好的方法查询表!要么我必须让DataContext与表同步,要么我必须找到一种直接查询表的方法

任何帮助都将不胜感激


谢谢大家!

您可以根据以下博文清除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。不要把它看作是一种必须全天候直播的连接,因为它不是。