在存储库级别水合对象的子实体的最佳方法是什么。例如:我需要系统中所有人的列表。每个人可以有多个电话号码。我将如何在我的存储库中填充所有这些数据?
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));
}
}
我对这种方法的问题是我正在执行一堆命中数据库的 sql 语句。这似乎不是最好的方法。我不能使用任何框架,必须使用 DataReader。
我可以采取什么更好的方法?这也是一个简单的例子。我的 Person 对象将会有更多列表。