Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 如何忽略递归缓存数据以将其完全存储在数据库存储中?_C#_Entity Framework_Caching - Fatal编程技术网

C# 如何忽略递归缓存数据以将其完全存储在数据库存储中?

C# 如何忽略递归缓存数据以将其完全存储在数据库存储中?,c#,entity-framework,caching,C#,Entity Framework,Caching,在我的DBMS上,我有两个具有一对多关系(A)的表 但是几分钟后 上下文是工作单元,工作单元通常不需要几分钟,因此问题的基本答案是创建新上下文并再次执行查询 如果您真的认为您的上下文必须存在很长时间(我对此表示怀疑,因为在这种情况下,您不想覆盖本地更改),您可以尝试以下方法: ctx.As.MergeOption = MergeOption.OverwriteChanges; ctx.Bs.MergeOption = MergeOption.OverwriteChanges; var lst =

在我的DBMS上,我有两个具有一对多关系(A)的表 但是几分钟后

上下文是工作单元,工作单元通常不需要几分钟,因此问题的基本答案是创建新上下文并再次执行查询

如果您真的认为您的上下文必须存在很长时间(我对此表示怀疑,因为在这种情况下,您不想覆盖本地更改),您可以尝试以下方法:

ctx.As.MergeOption = MergeOption.OverwriteChanges;
ctx.Bs.MergeOption = MergeOption.OverwriteChanges;
var lst = from a in ctx.As.Include("Bs") select a;

谢谢!这很有效!此外,我想保留上下文,以便将实例的一些更改保存到数据库中。因为如果我使用其他上下文,它将引发异常。为我的愚蠢感到抱歉,我是实体框架中的新bie!
ctx.Refresh(RefreshMode.StoreWins, lst);
foreach (var a in lst) {
    ctx.Refresh(RefreshMode.StoreWins, a.Bs);
}
ctx.As.MergeOption = MergeOption.OverwriteChanges;
ctx.Bs.MergeOption = MergeOption.OverwriteChanges;
var lst = from a in ctx.As.Include("Bs") select a;