EF4 + MVVM - 在ViewModel中公开实体?

Mik*_*tes 6 .net silverlight wpf entity-framework mvvm

我玩过一些不同的Model-View-ViewModel实现,并且一直遇到一种情况,我不确定正确的方法.我知道MVVM的目标之一是将View与应用程序逻辑分离,以便在没有View的情况下测试逻辑.将逻辑放在ViewModel中,该ViewModel不依赖于View解决了这个问题.大.如果模型可以以可以模拟的方式与ViewModel分离,那就更好了.

所以我的问题是,ViewModel应该将模型与View分离吗?换句话说,通过ViewModel将EntityFramework实体暴露给View是否"可以"?例如,假设视图中有一个组合框,用户可以选择状态作为地址.在AddressViewModel中,State应该作为真实的实体类型属性公开,还是应该作为StateViewModel公开?如果它应该是StateviewModel类型的属性,我不明白如何在AddressViewModel.State setter中管理底层模型(因为在属性中设置的是StateViewModel而不是State实体).

在我看来,这可能是两种方式,但似乎更一致,永远不会直接将模型暴露给视图.思考?

Rob*_*ney 2

视图模型的目的是将视图与数据模型解耦。如果视图中没有与数据模型耦合的功能,则不需要视图模型。

如果数据模型中有一个对象,其属性在创建后不会更改,并且视图不会修改,并且可以在 UI 中呈现而无需格式化或转换,那么您就不会耦合任何通过直接将其功能暴露给视图。为此,您不需要视图模型。

在您的示例中,您可能无需创建类即可逃脱StateViewModel,因为这样的类实际上不会执行任何操作。