ich den folgenden Code bin mit einem Objekt serialise:BOM-Codierung für die Speicherung in Datenbanken
public static string Serialise(IMessageSerializer messageSerializer, DelayMessage message)
{
using (var stream = new MemoryStream())
{
messageSerializer.Serialize(new[] { message }, stream);
return Encoding.UTF8.GetString(stream.ToArray());
}
}
Leider, wenn ich es in eine Datenbank (mit LINQ to SQL) speichern, abfragen, dann die Datenbank, die Zeichenfolge scheint mit einem Fragezeichen zu beginnen:
?<z:anyType xmlns...
Wie werde ich das los? Wenn ich versuche, de-serialise mit dem folgenden:
public static DelayMessage Deserialise(IMessageSerializer messageSerializer, string data)
{
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(data)))
{
return (DelayMessage)messageSerializer.Deserialize(stream)[0];
}
}
Ich erhalte die folgende Ausnahme:
„Fehler in Zeile 1, Position 1. Erwartet Element 'anyType' von Namespace 'http://schemas.microsoft.com/2003/10/Serialization/' .. Begegnet 'Text' mit dem Namen '', Namespace '. "
die Implementierungen der messageSerializer
Verwendung die DataContractSerializer
wie folgt:
public void Serialize(IMessage[] messages, Stream stream)
{
var xws = new XmlWriterSettings { ConformanceLevel = ConformanceLevel.Fragment };
using (var xmlWriter = XmlWriter.Create(stream, xws))
{
var dcs = new DataContractSerializer(typeof(IMessage), knownTypes);
foreach (var message in messages)
{
dcs.WriteObject(xmlWriter, message);
}
}
}
public IMessage[] Deserialize(Stream stream)
{
var xrs = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
using (var xmlReader = XmlReader.Create(stream, xrs))
{
var dcs = new DataContractSerializer(typeof(IMessage), knownTypes);
var messages = new List<IMessage>();
while (false == xmlReader.EOF)
{
var message = (IMessage)dcs.ReadObject(xmlReader);
messages.Add(message);
}
return messages.ToArray();
}
}
Okay, also welche Konfiguration sollte ich in der Datenbank ändern? –
Oh, gute Antwort, übrigens. Ich hatte gedacht, dass ich ein bisschen verrückt werde und ich bin nicht glücklich damit, nur Fragezeichen und Dinge zu schneiden. –
Keine Ahnung ... Was ist der Datenbankserver? Wie verbinden Sie sich damit? Was ist im Schema? – bobince