Я использую этот класс 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
. Тогда произошло то, что я столкнулся с проблемой как обеспечить, чтобы прокси создавались при использовании шаблона репозитория.