Я использую ADO.NET Entity Framework с несколькими методами уровня доступа к данным, которые возвращают одну и ту же сущность домена. Пусть будет:
class PersonEntity {
public int Id { get; set; }
public string Name { get; set; }
}
и методы возвращают сущность Person по разным критериям:
PersonEntity GetById(int id) {
return db.Person.FirstOrDefault(x => new PersonEntity { Id = x.Id, Name = x.Name });
}
IQueryable<PersonEntity> GetByName(string name) {
return db.Person.Where(x => x.Name == name).Select(x => new PersonEntity { Id = x.Id, Name = x.Name });
}
e.t.c. Блок кода x => new PersonEntity { Id = x.Id, Name = x.Name }
является очень повторяющимся (это очень раздражает для многих полей), но я не мог поместить его в одну точку, например статический метод:
PersonEntity ConvertToPersonEntity(Person x) {
return new PersonEntity { Id = x.Id, Name = x.Name }
}
Такой внешний вызов функции не может быть переведен в операторы SQL. Есть ли обходной путь для сохранения конверсии в одном месте?
Заранее спасибо!