WCF-REST和POCO無窮迴圈的問題
這陣子在寫REST配合上EF4和POCO
Lazy Loading的不支援這已經不用講了....
同樣的Proxy也一樣必須關掉,
但還是碰上一個問題,
明明在除錯模式看的時候,物件裡面的值也都有,是正常的,
但實際上,打開的網頁就是一片空白。
後來終於找到相關網站如下
http://nikhilthaker86.wordpress.com/tag/wcf-rest/
翻譯後大約的意思是( 翻錯了不要打我- -)
因為在呼叫的時候,會變成Customer 取得 Orders,
然後Orders裡面又取得Customer 然後,Customer又取得Orders
變成無窮迴圈取得,使得序列化沒辦法產生出來。
目前找到的方法是使用
[IgnoreDataMember]
這個參數是將此屬性不要序列化,
但同樣也有些問題,如果將Customer的Orders屬性關掉的話,
就變成,可以從Orders取得Customer屬性,但卻無法從Customer取得Orders
P.S 解決著個問題,大概一口氣看了我這輩子最多的英文文章吧= =
[IgnoreDataMember] public virtual ICollection<Orders> Orders { get { if (_orders == null) { var newCollection = new FixupCollection<Orders>(); newCollection.CollectionChanged += FixupOrders; _orders = newCollection; } return _orders; } set { if (!ReferenceEquals(_orders, value)) { var previousValue = _orders as FixupCollection<Orders>; if (previousValue != null) { previousValue.CollectionChanged -= FixupOrders; } _orders = value; var newValue = value as FixupCollection<Orders>; if (newValue != null) { newValue.CollectionChanged += FixupOrders; } } } } private ICollection<Orders> _orders;