Entity framework 实体框架4.1插入错误
我已经为我的基本窗口编写了一个通用存储库,它有一个问题。 更具体地说,有一个称为Unit的小poco类,如下所示: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 {
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();
}