实体框架不保存相关实体

时间:2013-12-23 09:55:02

标签: entity-framework-6

我有以下问题在最后几天让我发疯。现在我找到了一个解决方法 - 但我喜欢寻找根本原因。

我有一个如下定义的实体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表现得那样 - 特别是在没有任何错误的情况下不保存?

亲切的问候 约尔格

1 个答案:

答案 0 :(得分:1)

好吧,你应该在调用_context.savechanges()之前在你的上下文中添加你的新对象。所以它看起来像这样

var oia = new OrderItemAdjustment()
{
   AdustementId = 1
}

_Context.add(oia)

_Context.SaveChanges().