Предположим, у меня есть такая структура данных - где у объекта Person может быть много адресов, а у адреса могут быть строки с адресами Мэнни.
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<Address> Addresses { get; set; }
}
public class Address
{
public int Id { get; set; }
public List<AddressLine> AddressLines { get; set; }
public string PostCode { get; set; }
}
public class AddressLine
{
public int Id { get; set; }
public string AddressLine
}
Затем я использовал Entity Framework, чтобы разрешить эту структуру данных. чтобы быть сохраненным в моей базе данных таким образом:
public class DatabaseContext : DbContext
{
public DatabaseContext() : base("name=DatabaseConnection") { }
public DatabaseContext(string connectionString) : base(connectionString) { }
public DbSet<Person> People { get; set; }
}
Наконец, у меня есть класс, который взаимодействует с этой базой данных:
public class ProcessPeople
{
private DatabaseContext localDatabase;
ProcessPeople(DatabaseContext db)
{
localDatabase = db;
}
public DoProcessingOfPerson(int idOfPerson)
{
Person person =
localDatabase.People.Where(p => p.Id.Equals(idOfPerson)).FirstOrDefault();
Console.WriteLine("First : " + person.FirstName);
Console.WriteLine("Last : " + person.LastName);
// Print address
if(person.Addresses != null && person.Addresses.Count > 0)
{
if(person.Addresses[0].AddressLines != null && person.Addresses[0].AddressLines.Count > 0)
{
Console.WriteLine("Address: " + person.Addresses[0].AddressLines[0].AddressLine);
}
}
else
{
Console.WriteLine("No address available");
}
}
}
Проблема заключается в том, что после того, как человек извлекается с использованием кода :
Person person =
localDatabase.People.Where(p => p.Id.Equals(idOfPerson)).FirstOrDefault();
Массив адресов имеет значение всегда null - даже если там есть определенно связанные данные Address и AddressLine.
Мой вопрос:
Как можно выполнить поиск из базы данных платформы Entity, чтобы все данные во встроенных классах внутри класса Person также были извлечены?
Я хочу отозвать человека назад, а затем иметь возможность перемещаться через массивы Addresses и AddressLines - но эти классы не извлекаются из базы данных [даже если они существуют в реальной базе данных, которая была сгенерирована структурой сущностей]
Обратите внимание, что для краткости я не включил код ввода данных - я просто ищу, что мне нужно сделать с этой строкой:
Person person =
localDatabase.People.Where(p => p.Id.Equals(idOfPerson)).FirstOrDefault();
Для того, чтобы все объекты и подобъекты были заполнены в переменной "person", при условии, что соответствующие данные существуют.
спасибо огромное за любую помощь
David.