如何让Entity Framework和MVVM一起玩得很好?

时间:2010-01-02 01:12:06

标签: entity-framework mvvm

我想同时使用EF和MVVM,并试图看看它们是如何组合在一起的。我找不到很多例子,所以希望你们能回答几个问题。

假设我在名为Customer的数据库中有一个表。我运行EF设计师并获得数据模型。

下一步是运行一些linq以从数据模型中获取数据。让我们创建一个名为CustomerRepository的新类来执行此操作。

现在我猜测Model会调用CustomerRepository.GetCustomers来获取客户列表。

这是我的问题 - CustomerModel有一个由EF在数据模型中定义的客户对象列表。如何向其中添加验证属性或任何类型的验证?

EF和MVVM之间似乎有点脱节。我相信你们中的一些人之前已经打过这个 - 任何想法?有没有更好的方法来解决这个问题?

干杯

史蒂夫

1 个答案:

答案 0 :(得分:4)

验证,业务规则,客户对象的表示应该存在于ViewModel中,ViewModel将作为View的控制器或演示者。

就如何创建ViewModel而言,您有几个选择:

  1. 将Model作为VM的属性包含在内,并将模型实例传递给VM的构造函数。然后,您可以公开客户的属性,并将它们连接到基础模型的相应属性。
  2. 使用T4模板和反射(或最好Introspection)生成ViewModel以“读取”模型,并生成将直接映射到它的属性。
  3. 现在您可以向VM添加自定义验证规则,这样当从View发送适当的命令时,您可以执行业务规则,并且如果合适,您可以使用EF的API更新模型以将这些更改保留回到数据库...