1

我写的一个服务可以达到每周最新汇率的值。
但是将值发送到数据库时出现错误。我在实体框架中创建了一个数据库模型。关联的数据库表名称是CURRENCYWEEKLY_VALUE

相关字段是KOD字段中的字段CURRENCY和表中的字段。中的字段是 Foreing_key。KODWEEKLY_VALUEKODWEEKLY_VALUE

我在这段代码中得到一个错误:

    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();
            }
        }
    }

错误信息:

{"违反 PRIMARY KEY 约束 'PK_CURRENCY'。无法在对象 'dbo.CURRENCY' 中插入重复键。\r\n语句已终止。"}

如何处理这个错误?

4

2 回答 2

1

您需要将 currencyList 中的元素附加到上下文中,以让 EF 知道它们已经存在于数据库中,否则 EF 会尝试将它们插入数据库:

for (int i = 0; i < currencyList.Count; i++)
{
    myEntity.Currencies.Attach(currencyList[i]);
    // etc.
}
于 2012-04-26T16:26:12.297 回答
0

当您收到此错误时,您很可能会尝试插入表中已有的内容。

除了显而易见的之外,我还需要查看架构以查明问题的确切位置。然而,

weekCurrency.CURRENCYReference.Value=currencyList[i];

看起来很可疑。如果 KOD 已经是货币的外键,那么这个 CURRENCYReference 值是多少?

于 2012-04-26T15:22:11.323 回答