ну пару баллов.
Вы используете Entity Framework, так зачем вам нужно проецировать объекты ORM в DTO? Если вы используете чистое POCO, то вам вообще не нужен какой-либо прогноз.
Если вы хотите продолжать делать то же, что и вы, вам нужен промежуточный уровень для посредничества между вашими объектами ORM и вашими POCO.
Например, ваш репозиторий:
public IQueryable<JUser> GetUsers() // Note how it returns JUser, not the POCO
{
return context.JUsers;
}
тогда ваш сервис:
public Domains.User GetUserById(int userId)
{
return repository
.GetUsers() // IQueryable<JUser>
.Where(x => x.UserId == userId) // filter based on business req
.ToList() // materialize query on server
.Select(u => ConvertUserOrmToDomain(u)); // project into POCO
}
Другими словами, вам нужен менеджер, который знает, как материализовать запросы, основанные на бизнес-требованиях (в данном случае получение пользователя по id), и как преобразовать объекты в ваши доменные сущности.
Как я уже сказал, это пустая трата времени, IMO - используйте POCO для непосредственного представления моделей вашего домена, тогда вам не нужен этот процесс преобразования.