Behalte einen DataContract als XML in einer Datenbank

8

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?

    
Robert 03.07.2009, 04:22
quelle

5 Antworten

12

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.

    
jasonmw 03.07.2009, 04:37
quelle
8

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:

geht

Serialisiert:

%Vor%

Deserialisiert:

%Vor%     
Evan Larsen 01.12.2010 18:48
quelle
2

Wenn Ihre Datenbank SQL Server 2005 oder höher ist, können Sie den XML-Datentyp verwenden:

%Vor%     
John Saunders 06.07.2009 18:25
quelle
1

Ich bin mir nicht sicher über den effizientesten Weg, um es zu einem XElement zu bekommen, aber um es zu einem String zu bekommen, einfach ausführen:

%Vor%     
AgileJon 03.07.2009 04:32
quelle
1

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.

    
Michael Freidgeim 11.03.2010 07:07
quelle

Tags und Links