2012-07-05 54 views
0

我已經設置了我的項目以使用實體框架。這是數據庫第一種方法。設置EF與Windsor Castle一起工作

對於IoC,我使用Castle Windsor,並且該項目設置爲注入所有依賴關係。 我的問題是,是否需要爲我的EF實體設置Castle來做同樣的事情?我怎樣才能做到這一點?

+0

任何想法,任何人? Plz幫助! – annantDev 2012-07-06 15:43:06

+0

你問你是否將你的道實體對象註冊到城堡容器中?簡短的回答是你不需要它,你爲什麼? – Eduard 2012-07-11 11:13:06

回答

0

有許多方法可以在Castle中使用Entity Framework。我建議你採用Unit of WorkRepository模式。 DbContext提供了工作單元的大部分功能,而DbSet同樣提供了大部分存儲庫所需的功能。

您將遇到的主要問題是EF不理解模型對象的依賴注入。 EF在分配模型對象時總是使用空的構造函數,這意味着我們沒有機會對模型對象進行依賴注入。我們已經通過使用對象物化勾上的DbContext解決此得到:

((IObjectContextAdapter)this).ObjectContext.ObjectMaterialized += EFObjectLoadInitializer; 

的EFObjectLoadInitializer然後注入內核到模型對象(我們所有的模型對象必須支持IInjectKernel接口)。在注入之後,內核被用來解決任何其他的依賴。它不是很乾淨,但它運行良好,並使我們能夠利用我們與溫莎建立的其他基礎設施。