Entity framework 实体框架插入子实体
我试图坚持收集子元素,解决方案是可行的,但我想问更有经验的人,这种方法是否正确Entity framework 实体框架插入子实体,entity-framework,Entity Framework,我试图坚持收集子元素,解决方案是可行的,但我想问更有经验的人,这种方法是否正确 public bool InsertNewActionHistory(ActionHistory actionHistory) { bool result = false; using (TransactionScope transactionScope = new TransactionScope()) { this.ActionHi
public bool InsertNewActionHistory(ActionHistory actionHistory)
{
bool result = false;
using (TransactionScope transactionScope = new TransactionScope())
{
this.ActionHistories.AddObject(actionHistory);
if (actionHistory is ActionUpdate)
{
foreach (ActionUpdateDetail updateDetail in ((ActionUpdate)actionHistory).ActionUpdateDetails)
{
ActionUpdateDetails.AddObject(updateDetail);
}
}
this.CommitChanges();
transactionScope.Complete();
result = true;
}
return result;
}
如果
ActionUpdateDetail
通过导航属性与ActionUpdate
相关,则不需要3/4的代码。你可以这样做:
public bool InsertNewActionHistory(ActionHistory actionHistory)
{
this.ActionHistories.AddObject(actionHistory);
return true;
}
导航属性确保将相关对象添加到一起
请注意,如果使用POCO代理或纯POCO,这可能会更加困难。EF初学者可能应该坚持DB优先或model优先,直到你学会道路规则。嗨,Craig,这是一个POCO场景,DB优先的方法。信不信由你,我已经设法在没有不必要的代码的情况下解决了它。我不知道问题出在哪里。第一次尝试时,孩子,即导航属性根本没有PERIS?!然后,我决定尝试使用事务范围,并最终得到了给出的代码。一旦我逐渐删除了所有不必要的代码,它就开始正常工作。CommitChanges方法只调用了上下文的SaveChanges方法。可能是因为事务作用域或其他原因阻止了保存子项。我将尝试返回并复制ackward行为,如果成功,将与您共享。无论如何,非常感谢您的帮助:)