У меня есть таблицы, которые будут иметь некоторые известные, некоторые неизвестные столбцы, позволяя некоторый динамический SQL для выбора.Я ищу какие-либо столбцы, которые не имеют соответствующего свойства для добавления в словарь.Основываясь на другом вопросе Как я могу заставить Dapper.NET генерировать, когда в наборе результатов есть несопоставленные столбцы? , но вместо того, чтобы выдавать ошибку, я хотел бы просто сопоставить эти столбцы со словарем, который будет наclass.
public SqlMapper.IMemberMap GetMember( string columnName ) {
var fallbackMappers = new List<SqlMapper.ITypeMap>();
fallbackMappers.Add( _defaultTypeMap );
var fallbackTypeMapper = new FallbackTypeMapper(fallbackMappers);
var member = fallbackTypeMapper.GetMember(columnName);
if(member == null ) {
throw new Exception();
}
return member;
}
//...
public static async Task<IEnumerable<T>> QueryAsyncOtherProps<T>(
this IDbConnection cnn,
string sql,
object param = null,
IDbTransaction transaction = null,
int? commandTimeout = default,
CommandType? commandType = default
)
where T : BaseSimpleType {
lock ( _lock ) {
if ( TypesThatHaveMapper.ContainsKey( typeof( T ) ) == false ) {
SqlMapper.SetTypeMap( typeof( T ), new NullTypeMapToOtherProperties<T>() );
TypesThatHaveMapper.Add( typeof( T ), null );
}
}
return await cnn.QueryAsync<T>( sql, param, transaction, commandTimeout, commandType );
}
My BaseSimpleType просто содержит свойство словаря с именем OtherProperties, так что это будет вызываться только для типов, имеющих это поле, и имя является согласованным.Есть ли другой способ попробовать сделать это с Dapper?