如何在實體框架代碼優先代理被序列化時使用DataContractAttribute(IsReference = true)
進行裝飾?當POCO具有IsReference = true時序列化EF代理屬性
在使用的DataContractSerializer與ProxyContractResolver,我得到如下:
的IsReference設置類型「System.Data.Entity.DynamicProxies.MyType_59A83378572C10D0B31B6892FB6C3E7428C4BA214322C7A77BD5E1EB19E529CA」是「假」,但對於它的父類相同的設置'My.Namespace.MyType'爲'True'。派生類型必須具有與基本類型相同的IsReference值。改變類型設置
EF代理生成器似乎並不尊重我在POCO上需要的IsReference屬性(否則由於相互引用而導致堆棧溢出)。
在這些情況下,是否有任何機制來序列化EF Proxy?怎麼樣?
順便說一句。爲什麼你有代理實體?當你想序列化實體時,通常建議避免使用動態代理。 – 2012-07-10 18:44:05
也許我誤解了一些東西,但我希望能夠將它們從首次加載的上下文中分離出來,將它們序列化到緩存中,然後再將它們附加到不同的上下文中。該場景緩存負載昂貴的對象圖,該對象圖也必須與正在創建的新對象相關聯,例如, 'MyNewObject obj = new MyNewObject(){ExpensiveToLoad = Cache [「ExpensiveToLoad」]}。 – 2012-07-10 19:45:37
通過序列化進行分離是一種正確的方法,但它仍不能解釋爲什麼使用代理?你需要延遲加載來構建對象圖嗎? – 2012-07-10 20:58:16