2012-03-18 2 views
1

Я использую Entity Framework Code First об 4.3.0Entity рамки пустая ссылка на объект внешнего ключа

У меня есть два объекта с одного до многих отношениях

например

public class User 
    { 
    [Key] 
    public virtual string Username { get; set; } 

    public virtual ICollection<Vacation> Vacations { get; set; } 
    } 

    public class Vacation 
    { 
    public int Id { get; set; } 

    public virtual User User { get; set; } 

    public virtual string UserUsername { get; set; } 

    } 

Таким образом, сценарий создается пользователем с именем пользователя «User1». Впоследствии Отпуск создается с полем UserUsername, установленным на «User1». Таким образом, у нас есть наши отношения.

Если я затем запрошу базу данных после того, как отпуск сохранен для нового пользователя отпуска, значение null.

Если я распоряжаюсь DbContext и обновляю его. Требуется задание для пользователя отпуска.

Любые идеи, почему это может быть?

+0

Что произойдет, если вы помечаете свое свойство 'User' в сущности' Vacation' с помощью '[ForeignKey (« UserUsername »)]'? –

+0

@LadislavMrnka Я сделал сопоставление путем переопределения метода OnModelCreating для dbContext –

+0

Я проработал и опубликую ответ через 6 часов из-за rep. –

ответ

1

OK Позвольте мне попытаться объяснить, в чем проблема.

Microsoft заявляет, что Если ленивая загрузка включена и связанный объект уже загружен, он не будет загружен снова.

Я предполагаю, что именно этот дизайн вызывает у меня проблемы.

Создаю свой новый Отпуск, установите UserUsername в «User1» и нажмите «Сохранить». Затем я запрашиваю DbContext для нового отпуска. Поскольку этот объект уже загружен в контексте моего DbContext, он не перезагружается, следовательно, почему User равно null.

Если я создал новый DbContext и выполнил тот же запрос, пользователь заполняется.

Надеюсь, это имеет смысл.

+1

не могли бы вы показать мне пример. Я тоже сталкиваюсь с этой проблемой –

Смежные вопросы