我在应用程序中进行缓存,在应用程序启动时,我从数据库中预取几百万行数据并将其卡在本地缓存中。
我的问题是,在获取操作期间,当我通过 EF 加载所有数据时,对象图变得巨大(大约 4GB,一旦我处理上下文就消失了)。我希望能够告诉 EF 不要跟踪此查询范围内(或上下文的生命周期)内的任何对象,以便我的应用程序不会耗尽内存。
有没有好的方法来做到这一点?
我在应用程序中进行缓存,在应用程序启动时,我从数据库中预取几百万行数据并将其卡在本地缓存中。
我的问题是,在获取操作期间,当我通过 EF 加载所有数据时,对象图变得巨大(大约 4GB,一旦我处理上下文就消失了)。我希望能够告诉 EF 不要跟踪此查询范围内(或上下文的生命周期)内的任何对象,以便我的应用程序不会耗尽内存。
有没有好的方法来做到这一点?
您可以使用AsNoTracking方法
var entities = dbContext.MyEntities.Where(/**/).AsNoTracking();