【发布时间】: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