2017-04-21 18 views
-2

以下のLINQクエリを使用して挿入しようとしました。何とか私はidの重複レコードを取得しています。ある人が詳細を教えてくれますか?まず重複レコードを挿入するLINQ

try { 
OLA_ASSESSMENT_DTL OAD = db.OLA_ASSESSMENT_DTL.SingleOrDefault(
    ev => ev.OAD_RIV_ID == id); 

transaction = "Modify"; // resetting the value of the variable 
if (OAD == null) { 
    transaction = "Add"; 
    OAD = new OLA_ASSESSMENT_DTL(); 
} 
OAD.OAD_PER_RELAIONSHIP = relationshipfocus.relationshipfocus; 
OAD.OAD_PER_RELAIONSHIP_COMMENT = CRecHelper.CheckIsNullString(relationshipfocus.strrelationshipfocus).ToString(); 
OAD.OAD_RIV_ID = id;  
OAD.OAD_MODIFIED_DATE = DateTime.Now; 
if (transaction == "Add") { 
    db.OLA_ASSESSMENT_DTL.Add(OAD); 
} 
db.SaveChanges(); 
} 
+1

:: 'OAD.OAD_RIV_ID =あなたはレコードがどちらかあなたがあなたのテーブルに定義されてきた戦略以下、重複している知っているとき代わりに、一意のIDを設定しますid; '。あなたは**どのように複製しない**を期待していますか? –

+0

新しいレコードを挿入していますか、既存のレコードをIDで更新しようとしていますか? –

+0

@ NaveenKN K N - IDのレコードがある場合は、既存のレコードをIDで更新しようとしています。同時にレコードがない場合はそのIDを持つ同じテーブルに挿入する – Alai

答えて

0

(おそらくFirstOrDefaultの代わりSingleOrDefaultを使用する必要がありますが、それは詳細だが)、あなたは正しく、重複レコードを検出:

OLA_ASSESSMENT_DTL OAD = db.OLA_ASSESSMENT_DTL.SingleOrDefault(
     ev => ev.OAD_RIV_ID == id); 

transaction = "Modify"; // resetting the value of the variable 
if (OAD == null) 
{ 
    transaction = "Add"; 
    OAD = new OLA_ASSESSMENT_DTL(); 
} 

しかし、その後、あなたが何気なくオブジェクトにIDを割り当てます、あなたが知っている場合でも、それが重複している:

OAD.OAD_RIV_ID = id; 

まず、それは無用ですので、その行を削除します。

  • レコードがすでに存在する場合、その後、あなただけのレコードが重複している場合、あなたは新しいレコード

に重複IDを設定している現在の値

  • でIDを上書きしていますそれはあなたが常にIDを割り当て、新しいオブジェクトかどうかだかどうか

    OLA_ASSESSMENT_DTL OAD = db.OLA_ASSESSMENT_DTL.SingleOrDefault(
         ev => ev.OAD_RIV_ID == id); 
    
    transaction = "Modify"; // resetting the value of the variable 
    if (OAD == null) 
    { 
        transaction = "Add"; 
        OAD = new OLA_ASSESSMENT_DTL(); 
        // TODO: Assign a unique id, or let the database assign one if the column is auto-increment 
    } 
    
  • +0

    OAD_RIV_ID列の一意制約を作成できませんでした。しかし、このテーブルには番号を実行するための他の列があります。今、なぜ** Id **値を使用している間、重複レコードを取得しています。私はdb.SaveChanges()に到達する前に、トウのリクエストがすぐに送信されたと思う(doubleclick);最初に2番目のリクエストがトランザクション= Addとして更新されている。このための可能性はありますか – Alai

    +0

    OAD_RIV_ID列の一意制約を作成できませんでした。しかし、このテーブルには番号を実行するための他の列があります。なぜ、私はId値を使用している間に重複レコードを取得しているのですか?私はdb.SaveChanges()に到達する前に、トウのリクエストがすぐに送信されたと思う(doubleclick);最初に2番目のリクエストがトランザクション= Addとして更新されている。この可能性はありますか? – Alai

    関連する問題