1

私はサービスが毎週の最新の為替レートの値に達することができると書いています.
しかし、値をデータベースに送信するとエラーが発生します。Entity Framework でデータベース モデルを作成しました。関連するデータベース テーブル名はCURRENCYおよびWEEKLY_VALUEです。

関連するフィールドは、KODfield inCURRENCYおよびKODfield in WEEKLY_VALUEtable です。KODのフィールドWEEKLY_VALUEは 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();
            }
        }
    }

エラーメッセージ:

{"PRIMARY KEY 制約 'PK_CURRENCY' に違反しています。オブジェクト 'dbo.CURRENCY' に重複するキーを挿入できません。\r\nステートメントは終了しました。"}

このエラーをどのように処理できますか?

4

2 に答える 2

1

currencyList の要素をコンテキストにアタッチして、それらがデータベースに既に存在することを EF に知らせる必要があります。そうしないと、EF はそれらを DB に挿入しようとします。

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

このエラーが発生した場合、テーブルに既に存在するものを挿入しようとしている可能性が高くなります。

明らかなことに加えて、問題がどこにあるかを正確に特定するには、スキーマを確認する必要があります。でも、

WeeklyCurrency.CURRENCYReference.Value=currencyList[i];

不審に見える。KOD がすでに通貨の外部キーである場合、この CURRENCYReference 値は何ですか?

于 2012-04-26T15:22:11.323 に答える