Модель редактирования MVC3 - PullRequest
0 голосов
/ 30 января 2012

У меня есть следующая модель.

 public class Person
{
    public Guid ID { get; set; }

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "Prénom")]
    public string FirstName { get; set; }

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "Nom")]
    public string LastName { get; set; }

    [Required]
    [DataType("Users")]
    [Display(Name = "Adresse")]
    public Address Address { get; set; }

Как видите, он содержит открытое поле типа адреса:

    public class Address
{
    public Guid ID { get; set; }

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "Rue")]
    public string Street { get; set; }

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "Ville")]
    public string City { get; set; }

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "Province")]
    public string Province { get; set; }

У меня нет проблем с созданием нового экземпляра. И человек, и адрес заносятся в базу данных

 [HttpPost]
    public ActionResult Create(Person model)
    {
        if (ModelState.IsValid)
        {
            db.Persons.Add(model);
            db.SaveChanges();

Я хотел бы понять, почему при извлечении Человека из БД с помощью следующих команд адрес всегда равен NULL.

 return db.Persons.FirstOrDefault();

Спасибо

1 Ответ

4 голосов
/ 30 января 2012

Вам нужно быстро загрузить свойство адреса.

return db.Persons.Include("Address").FirstOrDefault();

Если вам нужно ленивое поведение при загрузке, вам нужно пометить свойство Address как виртуальное

[Required]
[DataType("Users")]
[Display(Name = "Adresse")]
public virtual Address Address { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...