У меня есть следующие 2 класса:
public class Reward
{
public int Id { get; set; }
public int CampaignId { get; set;
public virtual Campaign Campaign { get; set; }
}
public class Campaign
{
public int Id { get; set; }
public virtual ICollection<Reward> Rewards { get; set; }
}
При этом у меня есть все очевидные необходимые вещи, такие как DbContext и сопоставления.
Теперь позвольте сказать, что я создаю объект Reward и вставляю его вот так:
var reward = new Reward { CampaignId = 1 };
context.Set<Reward>().Add(reward);
context.SaveChanges();
reward = context.Set<Reward>().SingleOrDefault(a => a.Id == reward.Id);
//reward.Campaign is null
У меня, очевидно, есть кампания с Id 1, поэтому ограничение FK радует. После этой вставки мой объект вознаграждения имеет новый идентификатор удостоверения личности. Теперь проблема в том, что вознаграждение по-прежнему остается только созданной мной наградой. И с этим, свойство reward.Campaign равно null. Кажется, что EF сохраняет вставленные объекты в памяти, и когда я затем выполняю.SingleOrDefault(a => a.Id == reward.Id), он просто возвращает объект в памяти, а не новый прокси. Вероятно, это хорошо.
Таким образом, возникает вопрос: как получить или загрузить свойства навигации после вставки или получить новый прокси-сервер, который обладает свойствами навигации в качестве прокси.
Возможно, я не ошибаюсь?