我试图坚持收集子元素,解决方案有效,但我想问一下经验丰富的人,如果方法是正确的?
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;
}
答案 0 :(得分:0)
如果ActionUpdateDetail
通过导航属性与ActionUpdate
相关,那么您不需要3/4的代码。你可以这么做:
public bool InsertNewActionHistory(ActionHistory actionHistory)
{
this.ActionHistories.AddObject(actionHistory);
return true;
}
导航属性可确保将相关对象添加到一起。
请注意,如果您使用POCO代理或纯POCO,这可能会更难。 EF的初学者应该坚持使用DB-first或model-first,直到你了解道路规则。