给定
使用 SQL Server 和 Entity Framework 进行数据访问的企业 Web 应用程序。
域模型是一个金融对象层次结构,包含大约 40 多个对象(在 40 多个表中,500 多个列中),所有这些对象一起构成一个聚合(如 DDD 中)。
问题
我需要立即加载整个聚合。根对象和所有子对象、孙子对象、曾孙对象等(深度约为5或6)
我没有找到任何方法来使用 Entity Framework 有效加载聚合。
我尝试过的选项:
显式加载 - 调用次数过多
预加载 - 它生成的 SQL 非常丑陋,并且没有针对如此大的聚合进行优化,因此我认为使用数百个调用进行显式加载会更快
多个结果集存储过程+
objectContext.Translate
。可行的选择。但是,当将结果映射到实体时,DataAnnotation
会被忽略(并且我们对数据库中的列使用 underscore_casing),从而导致大量重复 - 存储过程返回的每一列都需要有一个正确的别名。
问题
有人可以建议什么是最有效、最干净的方式来加载聚合吗?
加载时间应该是毫秒,而不是秒。至于平均对象大小 - 聚合序列化为 JSON 通常低于 100 KB。
有什么框架/微 ORM 可以提供帮助吗?
最佳答案
您将不得不重新考虑您的聚合,因为它实际上不应该那么大。
似乎所有的 table 和其他移动部件绝对必须在一起,但在大多数情况下,事实并非如此。 ORM 生成的对象内的导航可能会让您相信它们属于在一起。
关于.net - 如何从 SQL Server 加载巨大的聚合(40+表,500+列)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38341052/