2010-01-07 47 views
2

我想实现Automapper将一个ViewModel映射到实体的其中一个属性也是一个实体的实体。AutoMapper自定义类型转换器依赖关系

我想让我的转换器使用NHibernate的ISession.Load <>方法来加载它。

所以问题是什么是ISession注入我的ITypeConverter实现的最佳方式是什么?另外需要注意的一点是,被注入的ISession会被处理掉,所以当映射需要发生时,我需要每次注入一个新的ISession?

+0

作为一个建议的话,这个网站的工作方式是,如果你发现有人回答了你的问题,你应该将该答案标记为正确的答案。这意味着当别人有同样的问题时,他们可以看到解决方案。 – griegs

+0

我会如果我找到答案 – adriaanp

回答

1

我们在我们的系统中执行此操作,并且拥有诸如Guid-> Entity类型转换器之类的东西。但是,我们根据HttpContext范围来定义我们的ISessions,因此每个ITypeConverter都会注入一个新的ISession 而不是。但是,AutoMapper会在每次需要时实例化一个新的ITypeConverter实例。

但是,来自不同ISession实例的两个实体会导致麻烦。只要确保你每个HttpContext共享一个ISession实例,并且你将被设置。

+0

Jimmy我在这里还有一个问题,因为我不直接需要ISession,而是添加了一个IRepository,所以我的ITypeConverter(s)将依赖于不同的IRepositories。我认为让这个工作起作用的唯一方法是向我的IoC询问我试图避免的ITypeConverter中的IRepository。 – adriaanp

+0

有没有在AutoMapper中拦截ITypeConverter实例的方法? – adriaanp

+0

是的,我们通常在Initialize调用中使用ConstructServicesUsing()方法来设置AutoMapper,以便为所有格式化器,解析器和类型转换器使用我们的容器。 –

0

我不知道NHibernate的难过,似乎没有人要回答这个问题,所以......

我会解决这个是可能写我自己的自定义模型绑定的方式。然后可以将我的ViewModel映射到我的实体。

您还可以访问HttpRequest对象,以便您可以获取所有文本字段并将它们映射到您的实体。

我希望这可以帮助,即使它不是特定于您的问题。

+0

这将工作,但我想使用像AutoMapper这样的工具,这样我就不必手工映射每个属性。 – adriaanp

相关问题