我已经看到这个问题问了几次,但没有解决我的问题。我已经创建了最简单的版本:
public class Order
{
public int OrderId { get; set; }
public virtual List<Item> Items { get; set; } //One to many navigation property
}
public class Item
{
public int ItemId { get; set; }
public string Description { get; set; }
}
一个订单可以有很多项目。简单的。现在与 EF 交互:
using (var context = new TestContext())
{
Order test = new Order();
context.Orders.Add(test);
context.SaveChanges();
test.Items.Add(new Item {Description = "test"}); // no good - test.Items is null!
}
如果我这样做,这test.Items
将是空的,我无法与之交互。但是,如果我“刷新”上下文一切都很好:
using (var context = new TestContext())
{
context.Orders.Add(new Order());
context.SaveChanges();
}
using (var context = new TestContext())
{
Order test = context.Orders.First();
test.Items.Add(new Item {Description = "test"}); // Happy days - test.Items is NOT null :)
}
我错过了什么?或者每次我添加一个具有一对多导航属性的项目时,我真的需要获得一个新的上下文吗?
预先感谢,哦,聪明的以太大师,他知道这个问题的真相!