Paramètres de flux Dapper et Varbinary (max)

c# dapper sql-server-2012

Question

J'essaie de stocker un blob binaire dans une table de base de données et d'en récupérer une sortie. Les données sont stockées dans un objet MemoryStream . J'essaie de l'enregistrer sur une table sql server 2012 à l'aide de la requête async. L'appel réussit mais aucune donnée n'est insérée dans la colonne. (par exemple, j'obtiens une entrée 0x0 lorsque je le demande).

Bien sûr, en vérifiant réellement une trace, je vois que dapper envoie un 0x0. Le flux de mémoire a une longueur alors est-ce que je fais quelque chose de mal ou est-ce que dapper ne supporte pas ce scénario? Ma chaîne de requête est simplement une simple insertion et récupère l'identifiant et le temps d'insertion.

J'utilise l'appel suivant

using(var conn=new SqlConnection(_connstr)){

var dynParams = new DynamicParameters();
dynParams.Add("BinaryBlob",
_memoryStream,DbType.Binary,ParameterDirection.Input,-1);
var res = await conn.QueryAsync<MyResultType>(_queryStr, dynParams);
}

La requête insère une ligne et obtient un horodatage, mais aucune donnée n'est réellement insérée. Qu'est-ce que je fais mal?

Réponse acceptée

Assurez-vous de chercher au début du flux de mémoire. Les flux ont un état de position. Une autre approche consisterait à convertir le flux de mémoire en octet [] avant d'essayer de le conserver.

par exemple

_memorystream.Seek(0, SeekOrigin.Begin);



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi