J'utilise le code suivant pour serialise un objet:encodage nomenclature pour le stockage de base de données
public static string Serialise(IMessageSerializer messageSerializer, DelayMessage message)
{
using (var stream = new MemoryStream())
{
messageSerializer.Serialize(new[] { message }, stream);
return Encoding.UTF8.GetString(stream.ToArray());
}
}
Malheureusement, quand je l'enregistrer dans une base de données (LINQ to SQL), puis interroger la base de données, la chaîne semble commencer par un point d'interrogation:
?<z:anyType xmlns...
Comment puis-je me débarrasser de cela? Lorsque je tente de désérialiser en utilisant les éléments suivants:
public static DelayMessage Deserialise(IMessageSerializer messageSerializer, string data)
{
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(data)))
{
return (DelayMessage)messageSerializer.Deserialize(stream)[0];
}
}
Je reçois l'exception suivante:
« Erreur dans la ligne 1 la position 1. Expecting élément 'anyType' de l'espace de noms 'http://schemas.microsoft.com/2003/10/Serialization/' .. rencontrés 'texte' avec le nom '', espace de noms ''. "
les implémentations de l'utilisation messageSerializer
le DataContractSerializer
comme suit:
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();
}
}
Bon, quelle configuration dois-je changer dans la base de données? –
Oh, bonne réponse, btw. Je pensais que je devenais un peu fâché et je ne suis pas content de couper les points d'interrogation et les choses. –
Aucune idée ... quel est le serveur de base de données? comment vous connectez-vous? Qu'y a-t-il dans le schéma? – bobince