比方說,我有一個關係數據庫的表:OrderableCategories和Orderables。它們與一個OrderableCategory附加到多個可訂購商品的一對多關係中。因此,LINQ中的OrderableCategory實例具有成員:ID
,Name
和EntitySet<Orderable> Orderables
。雖然通過WCF發送(wsHttpBinding,如果它很重要),EntitySet被轉換爲簡單的Orderable[]
。 Orderable
實例還包含一個名爲OrderableCategory
的成員,該成員只是此可訂購類別的一個實例。雖然通過WCF發送,但我猜想會發生類似這樣的情況:Orderable
實例使用此類別的字段填充其OrderableCategory
實例,但其Orderable[]
也填充了此類別中的其他可訂購設備。這些可執行代碼將其OrderableCategory
再次填充此類別,以便我理論上可以調用(對於接收的可訂購o):o.OrderableCategory.Orderables[0].OrderableCategory.Orderables[0]. (...)
等等。我只是猜測服務器進入了一個無限循環,並且當消息大小超過配額時,它會斷開連接,並且我看到服務關閉的異常。我怎樣才能避免這種情況,並在我的數據庫中具有關係的好處?我認爲我的懷疑是正確的,因爲當我禁用其中一個屬性(在LINQ類設計器中使其成爲內部)時,數據僅填充爲「單向」,而Orderable
已不再是其OrderableCategory
成員,它可以工作。但我想知道這是否可以在不損害財產的情況下實現。當通過WCF發送對象時,LINQ to SQL DataContext中的關係成員如何處理?
3
A
回答
0
這必須通過標記具有DataContract
屬性的實體並將其IsReference
屬性設置爲true
來處理。這將指示DataContractSerializer
跟蹤引用,而不是像您所描述的那樣跟蹤序列化對象。
Linq-to-Sql designer/SqlMetal應該通過將Serialization Mode
設置爲Unidirectional
來爲您做到這一點。
0
如果您通過WCF發送實體,當然,延遲加載等漂亮功能會出現在窗口外面。
你基本上需要決定你想使用它的兩個選項:
如果你問的實體
OrderableCategory
,您可以僅返回它的基本「原子」的屬性,例如ID, Name
等。好處是更小的尺寸 - 你發回的數據較少或者:如果你問的實體
OrderableCategory
,你可以回到它的基本性能加上這個類別包含您可以加載的Orderables
整個列表,並同時返回;好處:您可以立即獲得這些數據,但是不利的一面是,您必須發送更多數據。
很顯然,你不能真正做到無限渴望預加載 - 在某些時候,你必須停止,並留下更多的數據檢索到以後的WCF服務調用。如果您對此感興趣,您的客戶必須特別明確地詢問另一個OrderableCategory
。
相關問題
- 1. wcf發送linq到sql DataContext
- 2. DataContext對象(LINQ to SQL)
- 3. Linq-to-SQL datacontext不生成對象
- 4. LINQ-to-SQL業務層對象DataContext
- 5. WCF +發送LINQ生成的對象
- 6. LINQ to SQL Datacontext映射到WCF DataContract
- 7. 在使用DataContextFactory的WCF服務中管理Linq to SQL Datacontext
- 8. 如何檢查Linq-to-SQL對象是否已附加到DataContext?
- 9. 如何通過WCF使用它時序列化Linq-to-SQL DataLoadWith.LoadWith?
- 10. Linq to SQL DataContext的用法
- 11. Android:如何通過綁定發送帶有成員對象的對象?
- 12. LINQ to SQL的一對多關係
- 13. 查詢反對的LINQ to SQL關係
- 14. LINQ to SQL的關係
- 15. 通過WCF回調發送業務對象時發生超時
- 16. LINQ to sql + stackoverflow查詢對象時發生異常
- 17. Linq to SQL DataContext:如何加載數據?
- 18. asp.net mvc通過linq to sql中的關係進行搜索
- 19. 錯誤刪除對象+關係一對多+的LINQ to SQL
- 20. Linq to Sql datacontext未定義
- 21. LINQ to SQL多個DataContext-s
- 22. 緩存LINQ to SQL DataContext
- 23. Linq to SQL:我如何訂購通過組合對象?
- 24. 通過WCF發送一個Tuple對象?
- 25. Linq to SQL對象類的生成
- 26. 我們如何處理LINQ to SQL中的併發錯誤?
- 27. LINQ to SQL定義對象身份的成員不能更改
- 28. 通過LINQ to SQL中
- 29. 如何處理LINQ to SQL異常?
- 30. 我該怎麼辦的LINQ to SQL像類對象的關係?