Есть множество сущностей, которые
частично повторяют схему базы данных.
Например, в базе User(Id, Login, AddressId, ContactInfoId)
На клиенте — BEUser { Id, Login, Address, ContactInfo } — где Address и ContactInfo — это вложенные классы
Можно ли как-нибудь автоматизировать процесс получения данных из DataReader, чтобы не писать каждый раз
return new BEUser{
Id = reader.GetInt32(reader.GetOrdinal("Id")),
ContactInfo = new ContactInfo (){ Id = reader.GetInt32(reader.GetOrdinal("ContactInfoId")) }
//.................
Причем, нужно учесть, формат сущности не должен зависеть от его представления в базе.
У меня была идея сделать это через отражение (рефлексию), но тогда нужно вводить атрибуты и это сделает сущность зависимой от схемы базы данных.
Есть еще идея сделать это через Extension методы. Таким образом каждая сущность будет сама отпределять, как прочитать себя из базы.
Entity Framework и ORM не предлагать.