c# – 实体框架,急切加载和大对象图

我有一个 WPF项目,可以在项目的本地数据库上工作.随后将本地数据库与服务器同步.
每个项目都有多个系统,每个系统都有多个“标签”.标签一个产品,产品由多种材料组成,结构非常先进.一个简单的结构是这样的:

>项目

>系统

>标签

>产品

>材料1
>材料2
>材料3

>标签要求

>系统要求

我现在有两个问题需要解决.

>当项目加载时,我需要从数据库加载整个项目并使用本地副本,直到用户保存它.当我尝试急切加载它将需要永远,我发现你不应该有很多包括,因为它不利于性能.
我应该如何将深层结构加载到内存中?
>我需要将其加载到内存中的原因是用户可以处理副本,然后在给定点可以将其保存到数据库.我有多个计算功能,取决于树的不同部分.我的结论让我觉得我需要将整个项目(或至少一个系统)发布到业务层,因为所有数据都可以在本地编辑(内存)

我认为这是错误的方式吗?也许有一种方法可以将整个数据库(因为它不是那么大,它已经是本地的)加载到memorydb中,并在实体框架中具有本地上下文.当用户保存时,我将其保存到真实数据库,然后同步.

如您所知,我不知道如何解决这个问题,欢迎任何提示

解决方法

当使用.Include与N:M关系时,Entity Framework执行左外连接,返回的行可能比实际需要的多得多.

有一种技术可以更精确地加载对象图.这是一个很多编码和非常丑陋,但可以提供更好的性能.该技术详细描述(例如)in this blog.

My technique is to query once per levels and then link the objects in your application.

This technique is automatic (lazy) in others ORM like NHibernate as the “batch loading” but in EntityFramework you have to do it manualy.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...