Ich arbeite an einer Art "Store and Forward" -Anwendung für WCF-Dienste. Ich möchte die Nachricht in einer Datenbank als rohen XML-Blob speichern, als XElement. Ich habe ein paar Probleme damit, den Datenvertrag in den XElement-Typ zu konvertieren, den ich für den Datenbankaufruf benötige. Irgendwelche Ideen?
Dies gibt es als String zurück, den Sie in die db in eine xml-Spalte schreiben können. Hier ist eine gute generische Methode, mit der Sie Datenverträge serialisieren können.
%Vor%BTW, verwenden Sie LINQ zu SQL? Der Grund, warum ich frage, ist wegen des XElement-Teils Ihrer Frage. Wenn dies der Fall ist, können Sie dies im .dbml-Designer ändern, um eine Zeichenfolge als CLR-Typ und nicht als Standard-XElement zu verwenden.
Die am meisten gewählte Antwort (Jason W. gepostet) hat nicht für mich funktioniert. Ich weiß nicht, warum diese Antwort die meisten Stimmen bekommen hat. Aber nach der Suche fand ich das
Was für mein Projekt funktioniert hat. Ich hatte nur ein paar Klassen und legte die Attribute datacontract und datameber auf Klassen und Eigenschaften und wollte dann eine XML-Zeichenfolge, die ich in die Datenbank schreiben könnte.
Code aus dem obigen Link, wenn es 404:
gehtSerialisiert:
%Vor%Deserialisiert:
%Vor%Wenn Ihre Datenbank SQL Server 2005 oder höher ist, können Sie den XML-Datentyp verwenden:
%Vor%Ich habe versucht, die Jason w'Serialize-Funktion zu verwenden, die StringBuilder verwendet, aber es gibt eine leere Zeichenfolge für die von LingToSQL Designer generierte Tabellenklasse zurück mit dem Attribut [DataContract ()]
Allerdings, wenn ich auf Byte-Array serialiere, wie von AgileJon vorgeschlagen
und dann UTF7Encoding verwenden, um in eine Zeichenfolge zu konvertieren, erstellt es eine lesbare XML-Zeichenfolge.
%Vor%Nicht sicher, warum die stringBuilder-Lösung nicht funktioniert.
Tags und Links wcf c# xml datacontract