Entity Framework - вернуть значение базы данных или создать новый экземпляр (свойство nav) - PullRequest
1 голос
/ 17 августа 2010

Моя настройка следующая: Entity Framework POCO (+ прокси и ленивая загрузка). И класс Person со ссылкой на Address:

public class Person
{
    private Address _address;
    /* Navigation property */
    public virtual Address Home 
    {
        get
        {
            return _address;
        }
        set
        {
            _address = value;
        }
    }
}

Проблема в том, что это свойство 0..1 и может быть null. Вопрос в том, как создать новый экземпляр Address, если он равен null. Ленивая загрузка не создает новый экземпляр автоматически (и не должен), и если я переписываю получатель следующим образом, он всегда создает новый Address:

    private Address _address;
    /* Navigation property */
    public virtual Address Home 
    {
        get
        {
            if(_address == null) Address = MyContext.CreateObject<Address>();
            return _address;
        }
        set
        {
            _address = value;
        }
    }

Так что, если никогда не перейти от null к реальному значению, как это (я предполагаю, что это связано с механизмом отложенной загрузки и прокси-свойства EF). Проверка на null в конструкторе также не помогает - тот же результат - всегда создает новый Address.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...