Шаблон перевода сущностей приходит на ум.
http://msdn.microsoft.com/en-us/library/cc304747.aspx
Ну, может быть вариация на это.
Недавно мне пришлось сделать что-то похожее, и я просто создал еще один «слой», который переводит данные, хранящиеся в datarow / datatable и т. Д. В объект контракта данных. Сервисный уровень может вызывать этот новый метод уровня, используя в качестве параметра результаты вашего метода доступа к данным.
Вот быстрый и грязный пример PSUEDOCODE:
public class personTranslator
{
public static PersonDataContract TranslateToContract(Datarow personDataRow)
{
PersonDataContract resultPerson = new Person;
resultPerson.FirstName = personDataRow["FirstName"];
resultPerson.LastName = personDataRow["LastName"];
.
.
[etc.]
return resultPerson;
}
}
ОБСЛУЖИВАНИЕ Класс
public PersonDataContract GetSpecificPerson([Parameters])
{
[other setup/validation code...]
return PersonTranslator.TranslateToContract(PersonDataAccess.GetPersonRow([Parameters]));
}