2012-04-26 21 views
1

私は、毎週最新の為替レートの値に達することができるサービスを書いています。
しかし、値をデータベースに送信するときにエラーが発生します.Intity Frameworkでデータベースモデルを作成しました。関連するデータベーステーブルの名前はCURRENCYWEEKLY_VALUEです。Asp.net Entity Framework重複するPK例外を挿入する

関連フィールドはフィールド、CURRENCYフィールド、KODフィールド、WEEKLY_VALUEテーブルです。 WEEKLY_VALUEKODフィールドは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この声明は終了しました。」}

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

答えて

0

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

明らかに、私は正確にどこに問題があるのか​​を特定するためにスキーマを見る必要があります。 ただし、

weeklyCurrency.CURRENCYReference.Value = currencyList [i];

疑わしいと思われます。 KODがすでに通貨の外部キーである場合、このCURRENCY参照値は何ですか?

+1

'CURRENCYReference'があります'EntityObject'(POCOではなく)から派生したエンティティを使用するときにEFによって生成されるプロパティです。各参照ナビゲーション・プロパティー「XYZ」には、タイプ「EntityReference 」の関連する「XYZReference」プロパティーがあります。これは「普通」だが、古風なEFのようなものだ。 – Slauma

+0

ありがとう、私はそれを知らなかった。 – AwDogsGo2Heaven

1

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

for (int i = 0; i < currencyList.Count; i++) 
{ 
    myEntity.Currencies.Attach(currencyList[i]); 
    // etc. 
} 
関連する問題