C#Linq to SQL:无法添加已存在的实体

C#Linq to SQL:无法添加已存在的实体,c#,asp.net-mvc,linq,linq-to-sql,C#,Asp.net Mvc,Linq,Linq To Sql,我使用Linq在代码中插入、删除和更新数据库。 在使用InsertOnSubmit插入数据时,我得到了无法添加已存在的实体的异常。 请看一下我的密码 private static void AddNewPriceSettings(PRICE_SETTING priceSettingsInfo) { PRICE_SETTING priceSetting = new PRICE_SETTING(); priceSetting = priceSettingsInfo;

我使用Linq在代码中插入、删除和更新数据库。 在使用InsertOnSubmit插入数据时,我得到了
无法添加已存在的实体的异常。
请看一下我的密码

private static void AddNewPriceSettings(PRICE_SETTING priceSettingsInfo)
{
   PRICE_SETTING priceSetting = new PRICE_SETTING();
   priceSetting = priceSettingsInfo;           
   DataContext.CommonUsers.PRICE_SETTINGs.InsertOnSubmit(priceSettingsInfo);          
   DataContext.CommonUsers.SubmitChanges();
}

如果使用现有的
PRICE\u设置
对象调用
AddNewPriceSettings()
,您确实在尝试再次添加它。方法中的第二行就是这样做的。
新的价格设置()将不再被引用,并且将在不尝试插入它的情况下被GC’ed

如果要创建副本,在插入和提交之前,必须将
priceSettingsInfo
克隆到
priceSetting
变量中(可以使用各种技术)

cannot add an entity that already exists
错误消息清楚地说明了问题。数据库中已经有一行包含与您尝试插入的实体相同的实体

SQL如何确定两项是否“相同”?它使用一个键列,通常是一个整数id

因此,我要问您——您的列定义如何查找受影响的表?您从哪里获得传递到方法中的
PRICE\u设置


问题还可能是您正试图对已存在的对象执行更新,在这种情况下,您需要使用不同的方法。请共享有关上下文的更多信息。

只需设置新价格设置的属性即可

private static void AddNewPriceSettings(PRICE_SETTING priceSettingsInfo)
{
   PRICE_SETTING priceSetting = new PRICE_SETTING();
   //
   priceSetting.Prop1 = priceSettingsInfo.Prop1;
   priceSetting.Prop2 = priceSettingsInfo.Prop2;
   priceSetting.Prop3 = priceSettingsInfo.Prop3;
   // ...
   DataContext.CommonUsers.PRICE_SETTINGs.InsertOnSubmit(priceSetting );          
   DataContext.CommonUsers.SubmitChanges();
}

我已经删除了以前的数据,并且在删除旧数据后填写了新的价格设置数据,而不是更新数据。我已经删除了旧数据并尝试插入新数据。您能告诉我有关克隆的信息吗?@user1063573您能做点什么吗?最简单的方法可能是创建一个;而不是InsertOnSubmit(价格设置信息);是的,非常感谢。它在包含主键值后工作。