实体框架插入子实体

时间:2010-10-14 09:52:59

标签: entity-framework

我试图坚持收集子元素,解决方案有效,但我想问一下经验丰富的人,如果方法是正确的?

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;
    }

1 个答案:

答案 0 :(得分:0)

如果ActionUpdateDetail通过导航属性与ActionUpdate相关,那么您不需要3/4的代码。你可以这么做:

public bool InsertNewActionHistory(ActionHistory actionHistory)
{
    this.ActionHistories.AddObject(actionHistory);
    return true;
}

导航属性可确保将相关对象添加到一起。

请注意,如果您使用POCO代理或纯POCO,这可能会更难。 EF的初学者应该坚持使用DB-first或model-first,直到你了解道路规则。