Ich habe eine Basis-Repository mit einem generischen Methode Get Daten zurück mit Dapper wieGenerisches QueryMultiple mit Dapper
public T Get<T>(Func<IDbConnection, T> query)
{
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDB"].ConnectionString))
{
return query.Invoke(db);
}
}
aber jetzt habe ich die Notwendigkeit, mehrere Daten zurückzukehren. Die DAL-Abfrage ist wie folgt:
var multi = db.QueryMultiple(getCarDataSp , new { CustomerID = customerId, Year = year },
commandType: CommandType.StoredProcedure));
var cars = multi.Read<CarDTO>();
var options = multi.Read<CarOptionDTO>();
//wire the options to the cars
foreach(var car in cars){
var carOptions = options.Where(w=>w.Car.CarID == car.CarID); //I would override Equals in general so you can write w.Car.Equals(car)...do this on a common DataModel class
car.Options = carOptions.ToList();
}
es möglich wäre, eine generische GetMultiple in meinem BaseRepository zu haben oder es eine Frage der Einwickeln des bekommen mehr in meiner Get-Methode und dann Autos und Optionen dort eigenen getrennt sein Anrufe bekommen?
Als Ihr Anwendungsfälle bekommen komplexer, werden Lösungen weniger allgemein verwendbar. Ich empfehle nicht, sowas in eine BaseRepository-Klasse zu schreiben. Wenn Sie das tun, benötigen Sie mehrere Anwendungsfälle, um es korrekt zu erstellen. –
Yeah war ähnlich. Im Moment habe ich die Implementierung für diese Methode getrennt und nicht das Base Repository und denke, dass es meinen Bedürfnissen entspricht. Prost –
Welchen Wert fügt dieser Code hinzu? Nur die Wahl der Verbindungszeichenfolge. Und es reduziert die gesamte Dapper-Oberfläche auf einen Query-Aufruf. Es ist schlau, aber ich denke nicht, dass es eine gute Idee ist. – bbsimonbb