Asp.net 实体框架插入重复的 PK 异常
本文关键字:PK 异常 插入 net 实体 框架 Asp | 更新日期: 2023-09-27 18:32:24
我写一个服务可以达到每周最新汇率的值。
但是将值发送到数据库时出现错误。我在实体框架中创建了一个数据库模型。关联的数据库表名称为 CURRENCY
和 WEEKLY_VALUE
。
相关字段包括CURRENCY
中的KOD
字段和WEEKLY_VALUE
表中的KOD
字段。 WEEKLY_VALUE
KOD
领域是Foreing_key。
我在此代码中收到错误:
public void insertWeeklyCurrency(List<CURRENCY> currencyList)
{
myEntity = new CurrencyEntities();
DateTime date = new DateTime();
date = System.DateTime.Now;
String day= date.DayOfWeek.ToString();
if (!day.Equals("Sunday") && !day.Equals("Saturday"))
{
WEEKLY_VALUE weeklyCurrency;
for (int i = 0; i < currencyList.Count; i++)
{
weeklyCurrency = new WEEKLY_VALUE();
weeklyCurrency.KOD = currencyList[i].KOD;
weeklyCurrency.TARIH = currencyList[i].TARIH;
weeklyCurrency.DEGER = currencyList[i].F_SATIS;
weeklyCurrency.CURRENCYReference.Value=currencyList[i];
myEntity.AddToWEEKLY_VALUE(weeklyCurrency);
myEntity.SaveChanges();
}
}
}
错误消息:
{"违反主键约束'PK_CURRENCY'。无法在对象 'dbo 中插入重复键。货币'。''r'语句已终止。"}
如何处理此错误?
您需要将
currencyList 中的元素附加到上下文中,让 EF 知道它们已存在于数据库中,否则 EF 将尝试将它们插入数据库:
for (int i = 0; i < currencyList.Count; i++)
{
myEntity.Currencies.Attach(currencyList[i]);
// etc.
}
当您收到此错误时,您很可能正在尝试插入表中已有的内容。
除了显而易见的,我还需要查看架构以查明问题的确切位置。然而
weeklyCurrency.CURRENCYReference.Value=currencyList[i];
看起来很可疑。如果 KOD 已经是货币的外键,那么这个货币引用值是什么?