.net PostGreSQL-Entity insert-Dduplicate键值违反唯一约束

.net PostGreSQL-Entity insert-Dduplicate键值违反唯一约束,.net,postgresql,entity,.net,Postgresql,Entity,尝试在数据库中插入新记录时出现以下错误: 重复的键值违反了唯一约束 这是我的插入方法: using ( DataContext objDB = new DataContext() ) { objDB.Set<T>().Add( item ); objDB.Entry( item ).State = EntityState.Added; obj

尝试在数据库中插入新记录时出现以下错误:

重复的键值违反了唯一约束

这是我的插入方法:

            using ( DataContext objDB = new DataContext() )
            {
                objDB.Set<T>().Add( item );
                objDB.Entry( item ).State = EntityState.Added;
                objDB.SaveChanges();
                return item;
            }
我尝试插入的表在EDMX建模中如下所示:

<EntityType Name="tb_functionality">
  <Key>
    <PropertyRef Name="id" />
  </Key>
  <Property Name="id" Type="int4" StoreGeneratedPattern="Identity" Nullable="false" />
  <Property Name="name" Type="varchar" MaxLength="100" Nullable="false" />
</EntityType>
我试图在代码中插入的对象“item”如下所示:

ID=0 Name='Test'

我的代码有什么问题?当我使用SQL Server时,这非常有效,所以在PostGre中,我必须在我的模型或insert方法上碰运气吗


提前感谢您的帮助。

是否定义此对象构造函数的id?是的,已定义。它的值被设置为0,因为ID值没有被修改。嗯,我不确定,但是当您使用StoreGeneratedPattern=Identity时,您是在告诉hibernate对ID进行重新生成,尽量不要在构造函数中设置id。例如,我必须修改我的视图模型或创建另一个用于插入的视图模型,因为相同的视图模型用于填充GridView上的字段。我认为它可以有任何属性来禁用PK。我会在这里尝试,谢谢你的回答。StoreGeneratedPattern属性是在我生成它时由EDMX插入的。我不带它试试。