Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架插入子实体_Entity Framework - Fatal编程技术网

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行为,如果成功,将与您共享。无论如何,非常感谢您的帮助:)