我有以下问题在最后几天让我发疯。现在我找到了一个解决方法 - 但我喜欢寻找根本原因。
我有一个如下定义的实体OrderItemAdjustment:
this.HasMany(oia => oia.Adjustments).WithRequired(a => a.OrderItemAttribute).HasForeignKey(a => a.OrderItemAttributeId);
不,我正在尝试保存记录:
var orderAttr = (from oa in _context.OrderAttributes where oa.Id = 4711 select oa).FirstOrDefault();
var itemAttr = orderAttr.ItemAttributes.FirstOrDefault(ia => ia.OrderItemId == 4712);
var oia = new OrderItemAdjustment()
{
AdjustmentId = 1
}
itemAttr.Adjustments.Add(oia);
_context.SaveChanges();
在这种情况下,不保存实体OrderItemAdjustment。 当我像这样直接加载实体并替换第3行时,它可以工作:
var itemAttr = (from oia in _context.OrderItemAttributes where oia = 4712 select oia).FirstOrDefault();
有人可以向我解释为什么EF表现得那样 - 特别是在没有任何错误的情况下不保存?
亲切的问候 约尔格
答案 0 :(得分:1)
好吧,你应该在调用_context.savechanges()之前在你的上下文中添加你的新对象。所以它看起来像这样
var oia = new OrderItemAdjustment()
{
AdustementId = 1
}
_Context.add(oia)
_Context.SaveChanges().