1

我为有问题的基本窗口编写了一个通用存储库。更具体地说,有一个名为 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 中获取最大 id 并将其放置在 IdTextBox 中,然后调用基本形式的 add 方法,该方法调用上述基本存储库的 Add 方法。这是问题所在,我收到此错误,“属性'Id'是对象关键信息的一部分,无法修改。” 还有一个映射器类将每个属性映射到其相应的控件,该控件可以正常工作。我的问题是什么?

提前致谢。

4

1 回答 1

0

i figured out that this problem is occured because of auto detect changes enability which was true.

于 2011-09-04T08:36:22.070 回答