丢失在EF中断开CRUD

时间:2017-05-03 21:34:31

标签: c# entity-framework

我完全失去了为什么这个错误突然开始了。

我有实体A,它与实体B有一对多的关系。它工作得非常好,但突然间它停止了工作。我甚至无法在Enitity A中添加/更新项目,也无法在实体B中添加/更新。只有Get工作正常。如果我在那里添加或更新任何内容,我会收到以下错误。

几乎尝试了堆栈溢出的所有建议,但没有任何效果。

操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。

     public class ReportCategory : BaseEntity
     {
          public string Name { get; set; }

          public List<ReportType> ReportTypes { get; set; }
     }

     public class ReportType : BaseEntity
     {
            public string Name { get; set; }

           public int ReportCategoryId { get; set; }

         public string ReportUrl { get; set; }

         public ReportCategory ReportCategory { get; set; }

           public List<ReportAccess> reportAccesses { get; set; }

        }

实体添加操作

        public void Add(T entity)
    {
        if (entity == null)
        {
            throw new ArgumentNullException("entity");
        }
        entities.Add(entity);
        context.SaveChanges();
    }

更新操作

           public void Update(T entity)
    {
        if (entity == null)
        {
            throw new ArgumentNullException("entity");
        }
        if (entity.Id == 0)
        {
            throw new Exception("Entity unidentified");
        }
        if (entities.Local.Any(d => d.Id == entity.Id))
        {
            context.Entry(entities.Local.First(d => d.Id == entity.Id)).State = EntityState.Detached;
        }
        entities.Attach(entity);
        context.Entry(entity).State = EntityState.Modified;
        //entities.Attach(entity);
        context.SaveChanges();
    }

如果有人可以帮助我,我真的很感激。

0 个答案:

没有答案