オブジェクトのサブエンティティをハイドレイトするためのリポジトリレベルでの最良のアプローチは何ですか。例:システム内のすべての人のリストが必要です。一人一人が多くの電話番号を持つことができます。リポジトリにこのすべてのデータを入力するにはどうすればよいですか?
public class Person
{
public int? Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string MiddleName { get; set; }
public List<Phone> PhoneNumbers { get; set; }
}
public IEnumerable<Person> GetPeople()
{
var persons = new List<Person>();
const string sql = "SELECT FirstName, LastName, MiddleName FROM Person.Person";
while (reader.Read())
{
var p = PersonFactory.GetPerson(reader);
p.PhoneNumbers = this.GetPhoneByPersonId(p.Id);
persons.Add(p);
}
return persons;
}
public IEnumerable<Phone> GetPhoneByPersonId(int? id)
{
while (reader.Read())
{
numbers.Add(PersonFactory.GetPhone(reader));
}
}
このアプローチでの私の問題は、DBにヒットする一連のSQLステートメントを実行していることです。それは最善のアプローチとは思えません。フレームワークを使用できず、DataReaderを使用する必要があります。
私が取ることができるより良いアプローチは何ですか?また、これは簡単な例です。私のPersonオブジェクトにはさらに多くのリストがあります。