自定义AutoMapper ValueResolver是一个(in)适当的位置来获取数据吗?

时间:2012-12-26 17:24:14

标签: asp.net automapper

假设在我的ASP.NET MVC项目中,我有一个用于编辑产品的表单上的ViewModel。在许多其他领域中,我有一个产品类型列表,我希望用户能够从下拉列表中进行选择。

当我将域对象映射到ViewModel时,我正在调用一个服务来获取域对象,然后使用AutoMapper将其映射到ViewModel。要填写该产品类型列表的下拉列表,我调用另一个服务,该服务从数据库中获取该数据并使用它来填充我的ViewModel上的另一个属性。

我正在努力的是,是否最好在控制器中显式调用该辅助服务,而不是将该调用放入自定义ValueResolver类并配置我的映射以使用它。

我喜欢从我的控制器中删除对产品类型服务的依赖性的前景(因为有很多这些,并且控制器最终有很多依赖项),但是我担心这种类型的逻辑(可以打到数据库)到ValueResolver是一个不恰当的使用ValueResolver可能违反我所谓的最少惊喜的原则。 (即,我可能不希望映射代码导致数据库请求。)

使用ValueResolver是否常见?

1 个答案:

答案 0 :(得分:1)

Jimmy BogardAutoMapper Mailing List上回答:

  

是的,这绝对不常见。下拉列表数据源....男人,他们是我们在ViewModel世界中最难理解的事情。

     

请记住,您需要担心POST方案,重新填写验证失败的信息等。