エンティティ変換パターンが思い浮かびます。
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;
}
}
SERVICELAYER クラス
public PersonDataContract GetSpecificPerson([Parameters])
{
[other setup/validation code...]
return PersonTranslator.TranslateToContract(PersonDataAccess.GetPersonRow([Parameters]));
}