2010-01-07 44 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

相關問題