2009-07-10 67 views
2

我目前使用LINQ to SQL進行數據檢索,然後使用LINQ查詢填充自定義對象。我的自定義對象繼承自在datacontract中使用IsReference = true屬性的基類。然後我將對象層次結構並將其序列化爲XML,然後將其發送給服務。LINQ,自定義對象,序列化和對象引用

但是,這種方式可行,XML中發生的事情是對整個文件中的對象重複對象數據。我在XML文件中想要的是,如果一個對象與另一個相同類型的對象具有相同的數據(不管它在對象樹中的位置),我希望它具有對該第一個對象的引用,並且不重複數據。

我需要一些對象跟蹤,不知道它是否可以在LINQ DataContext級別處理,或者因爲我正在實例化我自己的自定義對象,如果我應該在該級別使用類似於每個對象的哈希表來跟蹤它類型。

這裏是我的課是這樣的:

class Section1 { 
    public static MyClass GetClasses(int Id) 
    { 
    using (DataContext dataContext = new DataContext()) 
    { 
     var result = from items in dataContext.Table 
     where item.Id == Id 
     select items; 

     foreach (var entry in result) 
     { 
     MyClass myClass = new MyClass(); 
     myclass.Id = entry.Id; 
     } 
    } 
    return myclass; 
    } 
} 

後來在我的節目,我創造了同類型的項目,如在其他類中的方法的另一份名單,我希望一些結果是與第一次調用相同:

Class2 { 
    public static MyClass GetItemClasses(int ItemId) 
    { 
    MyClass myClass = new MyClass(); 

    using (DataContext dataContext = new DataContext()) 
    { 
     var result = from items in dataContext.Table 
      where item.Id == ItemId 
      select items; 

     foreach (var entry in result) 
     { 
     MyClass myClass = new MyClass(); 
     myclass.Id = entry.Id; 
     } 
    } 
    return myclass; 
    } 
} 

這樣做可以成功填充我然後序列化的所有對象。關於如何在XML文件中引用重複的對象的任何想法?

感謝您的任何意見。

回答

1

以爲我會更新這個,因爲我找到了一個可行的解決方案。

由於我的自定義對象與我的DataContext分離,並且沒有跟蹤它,我繼續爲我的對象創建一個查找表,並在實例化一個新對象之前檢查該表。

這爲我提供了我以後的XML文件中的參考。

相關問題