1

我想測試我的代碼!我相信你同意一個崇高的目標。C# - 序列化和反序列化Linq表,同時保持關係

我需要模擬DataContexts爲我的迴歸測試,運行測試將驗證任何代碼更改,給定相同的輸入我們產生相同的輸出。

我使用Moles來嘲笑我的數據上下文。這很棒,很簡單,我推薦它,如果它更輕便,我可能會移動到Moq,但這是另一回事。

要獲取我的Mocked Data Contexts的數據,我想序列化存儲在MSSQL DB中的少量實時數據。爲了允許Linq-To-SQL類被序列化,我使用DataContractSerializer,其設置序列化模式屬性爲單向,如MSFT所示。這使我可以將行序列化爲XML。

當我想序列化一個表時,我必須首先通過調用ToList()將它拉進內存。這是因爲Linq.Data.Table本身不是可序列化的

因此,現在我爲每個表都有一個文件,然後我可以反序列化XML文件並從列表中創建Linq表。然後我們創建一個委託並將其用作模擬數據上下文的實現。所有這些在this screencast中都有清楚的解釋。

我遇到的問題是維護表之間的關係,我如何序列化所有依賴關係的行,然後反序列化它們,使它們仍然可以訪問。

  • 在我的生活DB我有表客戶和購買
  • 存在從客戶來購買
  • 在應用程序代碼中一個一對多的關係我想測試我使用類似的語法;

    VAR firstCustomerPurchases = Customers.First()。購買

  • 這將在我的測試情況下,我MockDataContext爲客戶和採購表不起作用只是列出了不相互結合。

如何在整個序列化/反序列化過程中保持關係?

感謝,

GAV株系

回答

0

你有因子評分有關轉換您的LINQ的表到DataSet,這是序列化和維護的關係?