Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
在WPF MVVM EF应用程序中放置Automapper的位置_Wpf_Entity Framework_Mvvm_Automapper - Fatal编程技术网

在WPF MVVM EF应用程序中放置Automapper的位置

在WPF MVVM EF应用程序中放置Automapper的位置,wpf,entity-framework,mvvm,automapper,Wpf,Entity Framework,Mvvm,Automapper,使用MVVM设计WPF应用程序 我使用EF作为我的ORM,通过服务层暴露到前端 阅读了所有我读过的内容后,我认为应该在服务层实现automapper,但我不认为这有什么意义。 ViewModel是我希望与数据实体不同的模型,所以我应该在ViewModel中进行映射 或者我应该做两次(似乎有些过分了),即将EF实体映射到DTO,以便服务传递到前端,然后前端将其转换为ViewModel对象。我不会在MVVM客户端应用程序中首先使用DTO或Automapper。只需使用EF类型作为模型类型,并构建将模

使用MVVM设计WPF应用程序 我使用EF作为我的ORM,通过服务层暴露到前端

阅读了所有我读过的内容后,我认为应该在服务层实现automapper,但我不认为这有什么意义。 ViewModel是我希望与数据实体不同的模型,所以我应该在ViewModel中进行映射


或者我应该做两次(似乎有些过分了),即将EF实体映射到DTO,以便服务传递到前端,然后前端将其转换为ViewModel对象。

我不会在MVVM客户端应用程序中首先使用DTO或Automapper。只需使用EF类型作为模型类型,并构建将模型类型组合在一起的ViewModels

但我并不关心ViewModel和模型之间的耦合。ViewModel已经是视图和模型/服务层之间的一个中间层,您几乎总是将所有部分部署在一起。通常,ViewModel可以直接包含模型类型


但是,如果您确实想将Automapper放在某个地方,它属于EF类型和模型类型之间,就像您的服务层是REST服务,并且您希望使用DTO而不是EF实体类型一样。在这种情况下,您可能希望在不重新部署应用程序的情况下更改REST服务,因此DTO允许您在不更改客户端接收的数据的情况下进行数据库/EF更改。

谢谢,是的,这让人觉得设计过度了。好的-我去掉了它,剩下一个DataService类,它包装了DbContext并实现了IDataService。这由ViewModels使用。在DataService内部,我正在进行从DbSet到ObservableCollection的两次显式转换。这听起来合理吗?听起来合理。在客户端应用程序中,这种东西的风险很低。如果以后对它不满意,可以重构。