【问题标题】:GraphDiff causing id of entity to not get populated after saveChanges()GraphDiff 导致实体的 id 在 saveChanges() 之后没有被填充
【发布时间】:2015-07-16 09:33:15
【问题描述】:

当使用 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;
        }
    }

谢谢

【问题讨论】:

    标签: entity-framework graphdiff


    【解决方案1】:

    所以我找到了解决方案 - 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;
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 2018-01-25
      相关资源
      最近更新 更多