2 Stimmen

LINQ-Verwendung mit XML

Wir haben ein Projekt, in dem der Zugriff auf die DB-Schicht (MS SQL) mit LINQ. Können wir nun unsere DB-Schicht ändern in XML-Datei und trotzdem mit demselben LINQ darauf zugreifen?

Wir möchten die Möglichkeit hinzufügen, Daten in einer einzigen XML-Datei oder in einer Reihe von XML-Dateien zu speichern.

Der aktuelle LINQ to SQL-Code sieht so aus:

result = (from e in db.Organizations
          where e.Id == idOrganization
          select e).SingleOrDefault();

ou

 result = (from e in db.Organizations
           where e.Name.Trim().ToUpper() == organizationName.Trim().ToUpper()
               && e.Id!=idCurrentOrganization
           select e).Count()>0;

2voto

CoderDennis Punkte 13343

LINQ to SQL und LINQ to XML haben Ähnlichkeiten, sind aber nicht identisch. Die LINQ-Abfragen könnten wahrscheinlich so geschrieben werden, dass sie auf dieselbe Weise verwendet werden können, aber der Code der Abfragen selbst müsste wahrscheinlich geändert werden.

Könnten Sie einige Beispiele dafür geben, wie Ihr aktueller LINQ to SQL-Code aussieht? Beispiele für die Art der Daten, die Sie verwenden, und wie Sie die XML-Datei formatieren möchten, würden den Leuten hier wahrscheinlich helfen, genauere Hinweise zu geben.

Bearbeiten: Ihre erste Abfrage scheint ein Objekt zurückzugeben. Wenn Ihr LINQ to SQL und Ihr LINQ to XML beide denselben Typ zurückgeben, können Sie sie austauschen, ohne den Code zu ändern, der das Ergebnis verbraucht.

Ihre zweite Abfrage scheint ein bool zurückzugeben, so dass das gleiche Konzept gilt für diese. Dem Code an anderer Stelle in Ihrer Lösung ist es egal, wie das bool gesetzt wurde.

Mikes Vorschlag, eine Schnittstelle für Ihre Datenzugriffsschicht zu verwenden, ist der richtige Weg. Für Ihre 2 Beispiele würden Sie eine Schnittstelle haben, die ein Organization-Objekt und ein bool enthält. Ihre SQL- und XML-Implementierungen wären unterschiedlich, aber jeder andere Teil Ihres Codes müsste nur wissen, wie man die Schnittstelle verwendet.

1voto

Es gibt einen zusätzlichen Schritt, den Sie tun müssen: Sie müssen das XML in ein XDocument (oder einen XNode, wenn ich mich richtig erinnere) laden, bevor Sie Ihre Daten abfragen können.

Danach ist es nur noch eine Frage der Auswahl von Knoten in einem Baum mit LINQ to XML-Syntax.

Leider gibt es keine LINQ-Syntax, mit der Sie beides abfragen und das XML oder die DB transparent anschließen können.

PS. Achten Sie bei der Auswahl von Knoten auf den XML-Namensraum, das könnte Ihnen Kopfzerbrechen bereiten!

PS2. Leider habe ich keinen Code zur Hand

PS3. Ich würde vorschlagen, dass Ihre Datenbankschicht von einer Schnittstelle abgeleitet wird, so dass Sie von XML zu DB und umgekehrt wechseln können

Ich hoffe, das hilft

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X