Entity framework 实体框架4.1插入错误

Entity framework 实体框架4.1插入错误,entity-framework,ef-code-first,code-first,generic-programming,Entity Framework,Ef Code First,Code First,Generic Programming,我已经为我的基本窗口编写了一个通用存储库,它有一个问题。 更具体地说,有一个称为Unit的小poco类,如下所示: public class Unit : BaseEntity { public string Name { get; set; } private ICollection<Good> _goods; public virtual ICollection<Good> Goods {

我已经为我的基本窗口编写了一个通用存储库,它有一个问题。 更具体地说,有一个称为Unit的小poco类,如下所示:

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

        private ICollection<Good> _goods;
        public virtual ICollection<Good> Goods
        {
            get
            {
                if(_goods==null)
                {
                    return new List<Good>();
                }
                return _goods;
            }
            set { _goods = value; }
        }
    }
这是我在generic repository类中的添加部分:

 public void Add(TEntity entity)
        {
            if (entity == null) return;
            if (Context.Entry(entity).State == EntityState.Detached)
            {
                Context.Set<TEntity>().Attach(entity);
            }
            Context.Set<TEntity>().Add(entity);
            Context.SaveChanges();

        }
public void Add(TEntity实体)
{
if(entity==null)返回;
if(Context.Entry(entity.State==EntityState.Detached)
{
Context.Set().Attach(实体);
}
Context.Set().Add(实体);
SaveChanges();
}
在添加新记录之前,从数据库中获取max id并将其放入IdTextBox中,然后调用基本表单的add方法,该方法调用前面提到的基本存储库的add方法。这就是问题所在,我得到了这个错误,“属性'Id'是对象关键信息的一部分,无法修改。” 还有一个映射器类,它将每个属性映射到其相应的控件,该控件可以很好地完成其工作。 我有什么问题


提前感谢。

我发现出现此问题的原因是自动检测更改功能,这是正确的

 public void Add(TEntity entity)
        {
            if (entity == null) return;
            if (Context.Entry(entity).State == EntityState.Detached)
            {
                Context.Set<TEntity>().Attach(entity);
            }
            Context.Set<TEntity>().Add(entity);
            Context.SaveChanges();

        }