В настоящее время я использую 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 файле для повторяющихся объектов?
Спасибо за любой ввод.
Думаю, я обновил бы это, так как нашел работоспособное решение.
Так как мои пользовательские объекты отделены от моего DataContext и не отслеживаются им, я пошел вперед и создал таблицу поиска для своих объектов, и я проверяю эту таблицу перед созданием нового объекта.
Это предоставило мне ссылки в файле XML, который я получил после.