Was ist die richtige Art der Verwendung von automapper
mit ado.net
in asp.net core
in generischer Weise? Auch die Sql-Abfrage hat die gleichen Spaltennamen wie in der Klasse <T>
In der angegebenen Beispielvariable result
ist immer eine leere Liste, sodass der Autoadapter keine Objekteigenschaften den DbDataReader-Spalten zuordnen konnte.ASP.NET CORE mit ADO.NET mit AutoMapper
public class CustomDbContext : BaseRepository
{
readonly DbConnection dbConn;
public CustomDbContext(RepoDbContext context) : base(context)
{
dbConn = context.Database.GetDbConnection();
}
public async Task<List<T>> Get<T>(string sql) where T : class
{
var config = new AutoMapper.MapperConfiguration(cfg =>
{
cfg.CreateMap<DbDataReader, List<T>>();
});
var mapper = config.CreateMapper();
await dbConn.OpenAsync();
using (var command = dbConn.CreateCommand())
{
command.CommandText = sql;
var reader = await command.ExecuteReaderAsync();
var result = new List<T>();
if (reader.HasRows)
{
await reader.ReadAsync();
result = mapper.Map<DbDataReader, List<T>>(reader);
}
reader.Dispose();
return result;
}
}
}
Sollte ich eine detailliertere Autoadapter-Konfiguration angeben, oder kann das nicht auf diese Weise gemacht werden?
In diesem Fall 'mapper.Map> (Reader)' 'kehrt null' –
Brivvirs