我为我的基本窗口编写了一个通用的存储库,但是存在问题。 让我们更具体一点,有一个名为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类,它将每个属性映射到相应的控件,从而使其工作正常。 我的问题是什么?
提前致谢。
答案 0 :(得分:0)
我发现这个问题是由于自动检测变化能力而发生的,这是真的。