GraphDiff导致实体的id在saveChanges()之后不会被填充

时间:2015-07-16 09:33:15

标签: entity-framework graphdiff

当使用graphDiff创建记录时,在调用saveChanges()之后,新的id不会被填充回实体。它已经在这里登录了github repo - https://github.com/refactorthis/GraphDiff/issues/144但是回购似乎不再那么活跃了,所以希望这里的某个人能够对如何使这个工作有一些见解。

如果qualtion.Id总是为0创建,它应该如何工作。对于更新,它是正确的ID。

    public int CreateUpdate(Qualification qualification)
    {
        using (var db = new DataContext())
        {
            db.UpdateGraph(qualification);

            db.SaveChanges();

            return qualification.Id;
        }
    }

我目前的工作是不使用图形差异进行创建,但这并不理想。

    public int CreateUpdate(Qualification qualification)
    {
        using (var db = new DataContext())
        {
            if (qualification.Id == 0)
            {
                db.Entry(qualification).State = EntityState.Added;
            }
            else
            {
                db.UpdateGraph(qualification);
            }

            db.SaveChanges();

            return qualification.Id;
        }
    }

由于

1 个答案:

答案 0 :(得分:3)

所以我找到了解决方案 - https://github.com/refactorthis/GraphDiff/issues/32#issuecomment-34420859

重要的是“GraphDiff会向您发送一个新实例”,因此您需要设置实体的回报。

    public int CreateUpdate(Qualification qualification)
    {
        using (var db = new DataContext())
        {
            qualification = db.UpdateGraph(qualification);
            db.SaveChanges(qualification.AuditUserId);

            return qualification.Id;
        }
    }