【发布时间】:2011-08-11 02:27:32
【问题描述】:
我正在使用Service Layer --> Repository --> Entity Framework (Code-First) w/POCO objects 方法,但我很难更新实体。
我正在使用 AutoMapper 将我的域对象映射到我的视图模型,这对于获取数据很有用,不知道如何将这些更改恢复到数据库中?
使用纯 POCO 对象,我会假设没有任何变化跟踪,所以我认为我唯一的选择是自己处理它。您是否只是确保您的视图模型具有与您的域对象完全相同的属性?如果我只是更改视图模型上的一两个字段怎么办?域对象上的其余字段不会在数据库中被默认值覆盖吗?
话虽如此,最好的方法是什么?
谢谢!
编辑
所以我遇到的就是这个,让我们以一个简单的Customer为例:
1) Controller 有一个服务CustomerService,它调用服务GetCustmoerByID 方法。
2) Service 调用CustomerRepository 并检索Customer 对象。
3) Controller 使用 AutoMapper 将 Customer 映射到 ViewModel。
4) Controller 将模型交给View。一切都很棒!
现在您在视图中对客户进行一些修改并将其发送回控制器以将更改持久保存到数据库中。
我会假设此时对象已分离。那么模型是否应该具有与Customer 对象完全相同的属性?您是否必须为每个不想显示的项目创建隐藏字段,以便它们可以保留回来?
您如何处理将对象保存回数据库?如果您的视图/模型只处理对象上的几个字段会怎样?
【问题讨论】:
-
如果你使用 Automapper 来映射一种方式,为什么不能用它来映射另一种方式?
标签: entity-framework repository-pattern poco service-layer