1

当使用 graphDiff 创建记录时,调用 saveChanges() 后新的 id 不会填充回实体中。它已在此处登录 github 存储库 - https://github.com/refactorthis/GraphDiff/issues/144但该存储库似乎不再那么活跃,因此希望这里的某个人对如何让这个工作。

它应该如何工作,但是qualification.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;
        }
    }

谢谢

4

1 回答 1

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;
        }
    }
于 2015-07-16T10:39:48.877 回答