В настоящее время я использую 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 для тех объектов, которые повторяются?
Спасибо за любой вклад.