Ich verwende LINQ to SQL für Datenabruf und dann füllen meine benutzerdefinierten Objekte mit LINQ-Abfragen. Meine benutzerdefinierten Objekte erben von einer Basisklasse, die das Attribut IsReference = true im Datenkontrakt verwendet. Ich nehme dann meine Objekthierarchie und serialisiere sie in XML, die dann an einen Dienst gesendet wird.LINQ, benutzerdefinierte Objekte, Serialisierung und Objektreferenzen
Dies funktioniert jedoch, was passiert in der XML ist, dass die Objektdaten für Objekte in der gesamten Datei wiederholt wird. Was ich in der XML-Datei haben möchte, ist, dass wenn ein Objekt dieselben Daten wie ein anderes Objekt desselben Typs hat (unabhängig davon, wo es sich in der Objektbaumstruktur befindet), hätte es einen Verweis auf das erste Objekt und Wiederhole die Daten nicht.
Ich brauche einige Objektverfolgung und nicht sicher, ob es auf der Ebene LINQ DataContext behandelt werden kann oder seit ich meine eigenen benutzerdefinierten Objekte instanziiere, wenn ich es auf dieser Ebene mit etwas wie eine Hashtabelle für jedes Objekt verfolgen sollte Art.
Hier ist, was meine Klassen wie folgt aussehen:
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;
}
}
Später in meinem Programm, das ich in einer anderen Klasse eine weitere Liste mit der gleichen Art von Produkten als Methode bin zu schaffen und ich einige der Ergebnisse zu erwarten sein, der gleiche wie beim ersten Anruf:
Wenn dies erfolgreich durchgeführt wird, füllt alle meine Objekte, die ich dann serialisieren. Irgendwelche Ideen, wie ich in meiner XML-Datei Referenzen für die Objekte haben kann, die sich wiederholen?
Danke für jede Eingabe.