LINQ, пользовательские объекты, сериализация и ссылки на объекты

2

В настоящее время я использую LINQ to SQL для извлечения данных, а затем заполняю свои пользовательские объекты запросами LINQ. Мои пользовательские объекты наследуются от базового класса, который использует атрибут IsReference = true в datacontract. Затем я беру мою иерархию объектов и сериализую ее в 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 файле для повторяющихся объектов?

Спасибо за любой ввод.

Теги:
xml-serialization

1 ответ

1
Лучший ответ

Думаю, я обновил бы это, так как нашел работоспособное решение.

Так как мои пользовательские объекты отделены от моего DataContext и не отслеживаются им, я пошел вперед и создал таблицу поиска для своих объектов, и я проверяю эту таблицу перед созданием нового объекта.

Это предоставило мне ссылки в файле XML, который я получил после.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню