C# updaing\EF保存违反了DB唯一性限制

C# updaing\EF保存违反了DB唯一性限制,c#,sql,asp.net-mvc,entity-framework,C#,Sql,Asp.net Mvc,Entity Framework,我正在使用EF更新实体 这是我的密码: public MamConfiguration_V1 Save(MamConfiguration_V1 item) { item.ThrowIfNull("item"); mMaMDBEntities.MamConfiguration_V1.AddObject(item); mMaMDBEntities.ObjectStateManager.ChangeObject

我正在使用EF更新实体

这是我的密码:

    public MamConfiguration_V1 Save(MamConfiguration_V1 item)
    {
            item.ThrowIfNull("item");

            mMaMDBEntities.MamConfiguration_V1.AddObject(item);

            mMaMDBEntities.ObjectStateManager.ChangeObjectState(item, System.Data.EntityState.Modified);

            mMaMDBEntities.SaveChanges();

            return item;
    }
然而,通过这种方式,我在DB中得到了PK冲突erorr

我更喜欢使用这种方式(创建一个新的EF实体)并将其标记为


已修改,我如何才能不打破唯一性限制?

如果您使用此方法更新现有项,则您将收到异常,因为

  mMaMDBEntities.MamConfiguration_V1.AddObject(item);

线路。这段代码看起来是您试图第二次将该项放入表中。如果我猜对了,并且您使用此方法更新现有项,那么您只需删除这一行即可-EF将根据您对对象字段所做的更改自动更新DB

我更喜欢使用这种方式(创建一个新的EF实体)并将其标记为已修改,我如何才能不打破唯一性限制?如果您只想“不打破唯一性限制”,可以通过在将项目添加到集合之前为其分配一个新Id来实现。在这种情况下,不应在每次修改对象时将其添加到集合中。只需在您的上下文中调用SaveChanges,您的对象将在不进行任何其他唯一性检查的情况下更新。
MamConfiguration\u V1
type对象是否具有导航属性?是的。对其他实体的引用