Linq to sql LINQ延迟加载功能&;DataLoadOptions关系

Linq to sql LINQ延迟加载功能&;DataLoadOptions关系,linq-to-sql,Linq To Sql,我遇到了一个路障,它已经级联到下面描述的情况。在回答我之前的问题时,我没有得到太多的帮助,(我想我必须学会更好地构建它们),但我希望至少有人能向我解释一下(我是LINQ的新手,还没有机会详细阅读) 我正在使用存储库模型通过LINQtoSQL访问数据。我试图使用1个声明为公共静态的数据上下文,以便始终使用相同的上下文 问题1:保存更改后,网页立即加载缓存值。更改已传播到数据库,但datacontext正在吐出对象的缓存副本 解决方法:在datacontext上设置ObjectTrackinEnab

我遇到了一个路障,它已经级联到下面描述的情况。在回答我之前的问题时,我没有得到太多的帮助,(我想我必须学会更好地构建它们),但我希望至少有人能向我解释一下(我是LINQ的新手,还没有机会详细阅读)

我正在使用存储库模型通过LINQtoSQL访问数据。我试图使用1个声明为公共静态的数据上下文,以便始终使用相同的上下文

问题1:保存更改后,网页立即加载缓存值。更改已传播到数据库,但datacontext正在吐出对象的缓存副本

解决方法:在datacontext上设置
ObjectTrackinEnabled=false

问题2:现在,对象不能延迟加载-当我在调试期间检查给定对象中的所有实体时,它们都为空

解决方法:在datacontext上设置
DeferredLoadingEnabled=false

问题3:LINQ不会自动为与给定对象关联的所有实体设置立即加载

解决方法:为datacontext显式配置LoadOptions,并通过设置
LoadWith(o=>o.entity1)
LoadWith(o=>o.entity2)
,…,
LoadWith(o=>o.entityN)
,手动识别每个关联实体

有人能帮我克服缓存问题而不必处理其他问题吗

如果没有,有人能告诉我是否有其他方法可以在数据上下文上设置ImmediateLoadingEnabled(或类似的东西),这样我就不必显式地声明与域中所有对象关联的所有实体的加载选项吗

我非常感谢您的反馈。如果我问的问题没有足够的信息,或者你想要一个例子,请让我知道


提前谢谢你

不能对Web应用程序使用单个上下文,因为Web应用程序是多线程的(例如,每个请求一个线程),这意味着多个线程使用相同的上下文。I.o.w.:您应该使用一个系统,在该系统中,对于每个数据请求,您创建一个新的上下文,并将其用于执行查询,然后处理上下文

大家好,考虑到web应用程序的多线程特性,我遇到的其他一些问题现在已经解决了。但是,我仍然发现问题1仍然存在——从技术上讲,相同的请求仍在处理中,我认为这不是解决最初问题的可行方案。ASP.NETMVC。。。如果这有区别。请求进入(发布编辑)-请求创建新的上下文,将从上下文中检索与要更新其数据的上下文项相等的上下文项(并且,我假设此时它正在被缓存),项被更新并保存,响应操作是再次尝试从数据库检索更新的副本,以作为模型数据传递给视图。我认为这是正确的-请纠正我的错误:)谢谢!