Если у вас уже есть класс, вы ищете поддержку «POCO» в ORM.
например. Entities Framework v4 делает это. Подробнее см. . Я понимаю, что nHibernate имеет такую поддержку сегодня.
В качестве альтернативы на уровне доступа к данным вы можете выполнить преобразование на уровне доступа к данным (DTO == Объект передачи данных ) с помощью устройства чтения данных:
var rs = dbCmd.ExecuteReader();
var results = new List<MyDto>();
while (rs.Read()) {
results.Add(new MyDto {
Id = rs.ReadInt("Id"),
Name = rs.ReadString("Name"),
...
};
}
Использование LINQ to SQL:
using (var dc = MyDataContext()) {
var results = from d in dc.MyDataType
select new MyDto {
Id = d.Id,
Name = d.Name,
...
};
}
Однако я склонен добавлять метод для настройки сгенерированного объекта с помощью вспомогательного метода для выполнения сопоставления (что помогает избежать повторения кода копирования свойства для каждого запроса).