У меня есть несколько классов, которые должны иметь одно или два свойства (из нескольких десятков), сопоставленные столбцу таблицы, имеющей другое имя столбца. Я не хочу отображать все свойства, когда только два отличаются от имен столбцов в базе данных.Использование CustomPropertyTypeMap для сопоставления определенных свойств
Я не могу найти приличные документы во всех вариантах отображения, которые могут быть использованы с CustomPropertyTypeMap, все они просто отображают отображение всего объекта с помощью CustomPropertyTypeMap (также как класс тестов Dapper). Когда я использую следующее:
// Set up custom repository parameter mappings.
var map = new CustomPropertyTypeMap(typeof(T),
(type, columnName) => type
.GetProperties()
.FirstOrDefault(
prop => prop.GetCustomAttributes(false)
.OfType<RepositoryParameterAttribute>()
.Any(attr => attr.ParameterName == columnName)));
Dapper.SqlMapper.SetTypeMap(typeof(T), map);
// Query the database
items = await databaseConnection.QueryAsync<T>(
storedProcedure,
itemParameters,
commandType: CommandType.StoredProcedure,
transaction: transaction);
Свойства, которые не оформлены с обратным RepositoryParameterAttribute нуль (или 0). Могу ли я использовать это для отображения только определенных свойств и позволить Dapper увлажнять оставшиеся, не украшенные атрибуты, или мне придется делать что-то обычай?
Спасибо.
Спасибо, я посмотрю. На данный момент я использую [это решение] (http://stackoverflow.com/questions/8902674/manually-map-column-names-with-class-properties), но для начала мне нужно немного отражения. Мои запросы относятся к общему методу, поэтому я не знаю заранее на уровне сервиса, что нужно для отображения без отражения. Я посмотрю на Dapper.FluentMap и посмотрю, разрешит ли это это! –
Dapper.FluentMap фактически использует предлагаемое там решение резервного решения, это просто более полное решение с классами сопоставления и без проблем с рефлексией. –
Ницца, оцените помощь. Я сдержу его! –