Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Linq to sql Linq到sql,访问预加载的数据_Linq To Sql - Fatal编程技术网

Linq to sql Linq到sql,访问预加载的数据

Linq to sql Linq到sql,访问预加载的数据,linq-to-sql,Linq To Sql,我正在使用linq和LINQtoSQL在我的应用程序中进行数据验证 我如何确定在查询数据上下文时,查询不会命中数据库? 我不想只访问已预加载的数据,并在此基础上进行验证 假设并发性在这里不是一个问题。如果您想100%确定,您需要在查询后使用ToList等工具在内存中获取数据 然后处理原始的datacontext,您可以确保列表中的实体不会再访问数据库。他们只是给你一个例外 但是,您将不再查询datacontext,因此它不是您问题的完整答案。如果对datacontext执行新的查询,据我所知,它

我正在使用linq和LINQtoSQL在我的应用程序中进行数据验证

我如何确定在查询数据上下文时,查询不会命中数据库? 我不想只访问已预加载的数据,并在此基础上进行验证


假设并发性在这里不是一个问题。

如果您想100%确定,您需要在查询后使用ToList等工具在内存中获取数据

然后处理原始的datacontext,您可以确保列表中的实体不会再访问数据库。他们只是给你一个例外


但是,您将不再查询datacontext,因此它不是您问题的完整答案。如果对datacontext执行新的查询,据我所知,它将始终命中数据库。Linq没有内置缓存。

我是在问一个愚蠢的问题还是一个不知道的问题?在内存中保存每个查询的版本并跟踪它是一件相当复杂的事情。不过,我可以进行datacontext扩展,或者强制转换BindingSource.List对象,但是BindingSource.List仅在主/详细视图中保留当前详细信息列表(如果设置为这样做的话),就像我的情况一样。我不相信这个问题不常见。人们如何在这样的环境中验证数据?你指的是什么样的验证?您可以在实体对象内部进行大量验证。它可以访问其详细信息。只有当您需要与其他实体进行验证时,您才会访问数据库,但这不是一个很大的问题吗?也许您想要实现的代码示例/avoidI对名为Name的属性有唯一的约束。如何在用户按下“保存”键时检查所有名称是否唯一,而不等待SqlException?如果经常这样做,我会缓存一个哈希集并使用它。如果您不经常这样做,我将使用SingleOrDefault并在插入或等待异常之前点击数据库。