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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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
Entity framework 需要一些关于MVVM+轻量级对象+EF的建议吗_Entity Framework_Design Patterns_Mvvm - Fatal编程技术网

Entity framework 需要一些关于MVVM+轻量级对象+EF的建议吗

Entity framework 需要一些关于MVVM+轻量级对象+EF的建议吗,entity-framework,design-patterns,mvvm,Entity Framework,Design Patterns,Mvvm,我们开发的后台应用程序具有相当大的数据库。 从DB到内存加载所有内容是不合理的,所以当请求模型属性时,我们通过EF从DB读取 但是我们的许多UI只是一些简单的实体列表!呈现给用户的属性。 例如,我们只想显示Id、Title和Name。 稍后,当用户选择项目并希望执行某些操作时,需要整个对象。现在我们有了存储在内存中的项目列表。 某些属性包含大文本、图像或其他数据。 EF处理实体,读取大量大型对象会显著降低性能 据我所知,这个问题可以通过创建轻量级实体并在适当的上下文中使用它们来解决 首先。 我担

我们开发的后台应用程序具有相当大的数据库。 从DB到内存加载所有内容是不合理的,所以当请求模型属性时,我们通过EF从DB读取 但是我们的许多UI只是一些简单的实体列表!呈现给用户的属性。 例如,我们只想显示Id、Title和Name。 稍后,当用户选择项目并希望执行某些操作时,需要整个对象。现在我们有了存储在内存中的项目列表。 某些属性包含大文本、图像或其他数据。 EF处理实体,读取大量大型对象会显著降低性能

据我所知,这个问题可以通过创建轻量级实体并在适当的上下文中使用它们来解决

首先。 我担心每个视图都会让我们创建新的LightweightEntity,最终会以臃肿的对象上下文结束

第二。当模型包装EF时,我们需要为各种实体提供方法

第三,。视图模型相互通信并传递实体

因此,我坚持所有这些考虑因素,需要良好的建筑设计建议。
有任何想法吗?

对于一个大的文本,你可以考虑,它通常用来在一个轻量级的实体和一个重的实体中分割一个表。

但我认为你们所谓的轻量级实体是数据传输对象DTO。这些不是由上下文提供的,因此它不会变得臃肿,而是由实体的投影提供的,这是在存储库或服务中完成的


对于投影,您可以使用,特别是我描述的它的新特性。这允许您减少为各种实体DTO提供的方法的数量,因为要投影到的类型可以在泛型类型参数中给定。

请查看是否有帮助。@Craig Stunz。不知道EF支持这个。谢谢这个投影被编译成SQL,不会返回不必要的属性,不是吗?是的,它被翻译成SQL。不要使用AutoMapper。它不能解决在SQL中返回大实体/选择太多的问题,因为它目前不能很好地处理IQueryable。@Craig尽管如此,它还是非常有用的库:@CraigStuntz,更新的特性会这样做,因为投影会传播到SQL查询中,所以只查询投影所需的字段,而不是像以前那样查询整个记录。