WPF MVVM应用程序的实体框架体系结构

WPF MVVM应用程序的实体框架体系结构,wpf,entity-framework,mvvm,ef-code-first,entity-framework-6,Wpf,Entity Framework,Mvvm,Ef Code First,Entity Framework 6,我目前正在开发一个遵循MVVM模式的WPF应用程序 在持久性方面,我将实体框架(代码优先)用于存储库和UnitOfWork: 描述了该实现 我在web环境(asp.NETMVC)中使用该体系结构有很多很好的经验。不幸的是,在桌面应用程序上使用这种架构似乎并不合适。我遇到了一些麻烦: 我正在使用工作单元和存储库模式加载数据库模型。它被指定给我的ViewModel中的一个变量。ViewModel的公共属性引用数据库模型的变量。第一个问题是:当用户现在通过视图更改属性内容时,也会对数据库模型进行更改

我目前正在开发一个遵循MVVM模式的WPF应用程序

在持久性方面,我将实体框架(代码优先)用于存储库和UnitOfWork:

描述了该实现

我在web环境(asp.NETMVC)中使用该体系结构有很多很好的经验。不幸的是,在桌面应用程序上使用这种架构似乎并不合适。我遇到了一些麻烦:

我正在使用工作单元和存储库模式加载数据库模型。它被指定给我的ViewModel中的一个变量。ViewModel的公共属性引用数据库模型的变量。第一个问题是:当用户现在通过视图更改属性内容时,也会对数据库模型进行更改。当视图现在关闭(不保存)并稍后再次打开时,更改仍然存在。因此,我总是在加载数据库模型对象时创建它们的“副本”。这不仅导致了我想要删除的大量代码,而且还导致了许多意想不到的行为,特别是在谈到数据库中的“更新”条目时(这里尤其是在复杂的多对多关系中)

因此,这种体系结构在“短期环境”(如asp.NETMVC)中似乎很好,但在“长期环境”中却不行


您是否遇到过相同/类似的问题?您是如何处理这些问题的?

我不会说这是MVC与WPF之间的问题-这更多的是一个“我如何处理UpdateSourceRigger”的问题。您是如何处理这些问题的?你能提供一个替代方案吗?我也在使用存储库/工作单元模式,这非常痛苦。@MikeEason备选方案的数量是无穷无尽的。什么适合OP是不可能猜测的。研究,选择你最好的猜测,原型,然后选择赢家。我个人会使用像dapper这样的微型orm,滚动我自己的类型。