【问题标题】:LINQ, custom objects, serialization and object referencesLINQ、自定义对象、序列化和对象引用
【发布时间】:2009-07-10 15:29:23
【问题描述】:

我目前正在使用 LINQ to SQL 进行数据检索,然后使用 LINQ 查询填充我的自定义对象。我的自定义对象继承自使用数据合同中的 IsReference = true 属性的基类。然后,我将我的对象层次结构序列化为 XML,然后将其发送到服务。

这可行,但是 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 文件中引用那些重复的对象有什么想法吗?

感谢您的任何意见。

【问题讨论】:

    标签: c# xml-serialization


    【解决方案1】:

    我想我会更新这个,因为我找到了一个可行的解决方案。

    由于我的自定义对象与我的 DataContext 是分开的并且没有被它跟踪,我继续为我的对象创建了一个查找表,并在实例化一个新对象之前检查了该表。

    这为我提供了我所追求的 XML 文件中的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2014-05-19
      • 1970-01-01
      相关资源
      最近更新 更多