這不是一個非常簡單的問題,但希望有人遇到過這個問題。在MVC2中對Castle Windsor和Entity Framework 4.0(POCO)使用FluentValidation
我試圖讓下面的東西一起工作:
- MVC2
- FluentValidation
- 實體框架4.0(POCO)
- 溫莎城堡
我已經很很多東西都得到了工作。我已經實施了Castle Windsor,並且使用了作爲MVCContrib一部分的WindsorControllerFactory提供的控制器。我也有城堡服務FluentValidation驗證程序,如本文所述:http://www.jeremyskinner.co.uk/2010/02/22/using-fluentvalidation-with-an-ioc-container/
我試圖在視圖上使用Html.EditorForModel或EditorFor時出現問題。當我嘗試這樣做,我收到此錯誤信息:
支持服務FluentValidation.IValidator`1 [System.Data.Entity.DynamicProxies.State_71C51A42554BA6C3CF05105DA05435AD209602C217FC4C34CA52ACEA2B06B99B,EntityFrameworkDynamicProxies-BrindleyInsurance.BusinessObjects號成分,版本= 1.0.0.0 ,Culture = neutral,PublicKeyToken = null]]被發現
這是由於在Entity Framework 4.0上使用POCO代。在運行時,生成的類會被動態代理封裝,以便跟蹤和延遲加載。顯然,在使用EditorForModel或EditorFor時,它試圖要求Windsor爲動態代理類型創建驗證程序,而不是基礎實型。
有誰知道我能做些什麼來解決這個問題?
有沒有什麼辦法可以檢測EF4中的代理? – 2010-05-21 01:59:35
你是如何得到這個的 - 讓IValidator關閉代理類型? – 2010-05-21 06:59:47
該框架對此負責。我使用了實體框架4和POCO模板。 EF在運行時用代理類型包裝真實類型,以便它可以執行Lazy Loading之類的操作。所以,如果你不知道它,你實際上使用的是代理類型。當框架調用驗證器工廠並將其傳遞給工廠時,該框架將採用該框架。當然,工廠不知道那是,所以你得到的錯誤。作爲答案建議之一,我將致力於創建一個新的驗證工廠。我會發布,如果我得到它的工作。 – 2010-05-21 14:31:27