отложенная загрузка не работает при работе с новыми сохраненными объектами (при получении их из контекста, который их сохранил) - PullRequest
6 голосов
/ 23 сентября 2011

У меня есть этот класс

public class Comment
{      
    public long Id { get; set; }
    public string Body { get; set; }
    public long OwnerId { get; set; }
    public virtual Account Owner { get; set; }
    public DateTime CreationDate { get; set; }
}

проблема в том, что владелец виртуального свойства в том, что я получаю null object reference exception при выполнении:

comment.Owner.Name

при вызове этого сразу после объектабыл сохранен (из того же экземпляра DbContext) с новым контекстом будет работать

кто-нибудь знает что-нибудь об этом?

1 Ответ

18 голосов
/ 23 сентября 2011

Это потому, что вы создали Comment с помощью конструктора.Это означает, что экземпляр Comment не проксируется и не может использовать отложенную загрузку.Вы должны использовать Create метод на DbSet вместо этого, чтобы получить прокси-экземпляр Comment:

var comment = context.Comments.Create();
// fill comment
context.Comments.Add(comment);
context.SaveChanges();
string name = comment.Owner.Name; // Now it should work because comment instance is proxied
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...