实体框架4.1插入错误

时间:2011-09-03 18:49:32

标签: 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
        {
            get
            {
                if(_goods==null)
                {
                    return new List<Good>();
                }
                return _goods;
            }
            set { _goods = value; }
        }
    }

从基本实体类继承为:

public class BaseEntity 
    {

        public int Id { get; set; }
        public override string ToString()
        {
            return Id.ToString();
        }

    }

这是我的通用存储库类的添加部分:

 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();

        }

在添加新记录之前,从db中获取max id并将其放置在IdTextBox中,并调用它们添加基本形式的方法,该方法调用上述基本存储库的Add方法。这是问题,我得到这个错误,“属性'Id'是对象的关键信息的一部分,无法修改。” 还有一个mapper类,它将每个属性映射到相应的控件,从而使其工作正常。 我的问题是什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我发现这个问题是由于自动检测变化能力而发生的,这是真的。