Я использую этот класс Entity с Entity Framework 5 Code First:
public class Survey
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string SurveyName { get; set; }
[Required]
public int ClientID { get; set; }
[ForeignKey("ClientID")]
public virtual Client Client { get; set; }
}
И в моем методе Create Control я делаю это:
Survey entity = new Survey()
{
SurveyName = "Test Name",
ClientID = 4
};
db.Surveys.Add(entity);
db.SaveChanges();
Client c1 = entity.Client; //Why is this null?
Client c2 = db.Clients.Find(entity.ClientID); //But this isn't?
string s2 = c2.ClientName;
string s1 = c1.ClientName; //null reference thrown here
Свойство навигации клиента остается null после SaveChanges. Я ожидал вызова для загрузки Клиента из базы данных, поскольку существует внешний ключ. Почему он этого не сделал?
ИЗМЕНИТЬ
Код здесь возникает, когда мои контроллеры зависят от DbContext. Вскоре после того, как я получил эту работу, я повторно использовал код для использования репозиториев и единицы работы. Часть этого движения была обусловлена тем фактом, что было просто неправильно использовать Create, когда я хотел использовать new. Тогда произошло то, что я столкнулся с проблемой как обеспечить, чтобы прокси создавались при использовании шаблона репозитория.