Hallo ich habe folgendes:
public static RawData GetReportData(string connectionString, string UserGuid, string Report_Id)
{
var Connection = new SqlConnection(connectionString);
using (var dbc = Connection)
{
var multi = dbc.QueryMultiple("myStoredProc", new { UserGuid, Report_Id }, commandType: CommandType.StoredProcedure);
// get the model Id
var Id = multi.Read<dynamic>().ToList();
var mId = Id.First().model_ID;
// get the report data
var theData = multi.Read<dynamic>().ToList();
var f = new RawData();
//var thisworks = new List<dynamic>();
f.Model_Id = mId;
f.rdata = theData;
return f;
}
}
RawData ist dieses Modell:
public class RawData
{
[DataMember]
public int Model_Id { get; set; }
[DataMember]
public IEnumerable<dynamic> rdata { get; set; }
}
Der gespeicherte Prozess gibt zwei Datensätze zurück. Der erste enthält eine Liste mit einer Zeile und einer ID. Die zweite enthält einen Bericht mit einer unterschiedlichen Datenstruktur. Der Dapper Code funktioniert einwandfrei und die richtigen Daten werden zurückgegeben.
Sobald ich jedoch versuche, diese Daten in meinem Modell zurückzugeben, wird der Code ohne Fehler ausgeführt, scheint dann aber wieder zu kommen und versucht die Multi-Abfrage erneut auszuführen. Es ist sehr merkwürdig.
Wenn ich das mache, dann funktioniert es:
var thisworks = new List<dynamic>();
f.rdata = thisworks; //theData;
Mache ich etwas dummes? Kann irgendjemand etwas Offensichtliches entdecken? Vielleicht habe ich das zu lange angeguckt?
Dies scheint durch den dynamischen Datentyp verursacht worden zu sein. Ich habe das beseitigt und eine große Klasse benutzt, die mehrere statische Listen enthielt, die normalerweise leer waren und das Problem verschwand.