2011-02-23 103 views
1

我試用EF CodeFirst CTP 5,並將其與WCF數據服務一起使用。我得到一個錯誤Internal Server Error. The type 'System.Data.Entity.DynamicProxies.Person_C321D7A37002A1B42C3CBAECC27983D77F6B7FCC3F837175B2CBB55CCA66AF55' is not a complex type or an entity type.WCF +實體框架CodeFirst = DynamicProxies異常?

如果我使用由CF創建的數據庫的edmx生成的人,我沒有問題。在閱讀中,似乎懶惰的加載正在搞砸了事情,而以前的EF版本讓我可以用DbContext中沒有的選項標誌來關閉代理生成。有一種方法可以將LazyLoading設置爲false,但這並不會關閉代理生成。

謝謝。

+0

你不能急於負載實體關係。 – 2011-02-23 20:31:49

+0

不,我不希望它加載它們,因爲它是一個OData提要,它只是放棄鏈接到其他實體。我已經設置了LazyLoadingEnabled = false,所以它不是什麼時候加載的問題。 – Paul 2011-02-23 20:34:37

回答

4

這裏是您可以在EF代碼首先CTP5做什麼:

((IObjectContextAdapter)context).ObjectContext.ContextOptions.ProxyCreationEnabled = false; 

或者,這是WCF數據服務在VS 2010 RTM的錯誤。您可以使用修復了this issue的WCF數據服務的CTP1。

希望這會有所幫助。
感謝
PRATIK

+0

真棒,謝謝! – Paul 2011-02-25 22:15:37

+0

只是爲了記錄,CTP1安裝沒有*修復問題,但解決方案與投給IObjectContextAdapter沒有,謝謝。 – Paul 2011-02-25 22:28:34

0

在CTP1,二進制文件已更名爲Microsoft.Data.Services。*。dll的。你是否改變了對新組件的引用?我很確定這個問題在CTP1中得到了解決。所以只是想確保它對你有用。

感謝 PRATIK

+0

是的,我正在使用CTP 1 – Paul 2011-02-28 17:59:14

0

如果您使用的是新的DbContext類,則可以使用

Configuration.ProxyCreation = false 

要禁用動態代理創建