2009-04-24 16 views
1

このコードでは、データベースに変更はありません。 上記のコードを実行すると、新しいエントリが作成されなくなり、エントリも更新されなくなります。更新SubmitChanges() - 更新しない

public void UpdateCallback(callback cb_) 
    { 
     callback call = context.callbacks.Single(c => c.callbackID == cb_.callbackID); 

      //call.callbackID = cb_.callbackID; 
      call.status = cb_.status; 
      call.contactName = cb_.contactName; 
      call.company = cb_.company; 
      call.phone = cb_.phone; 
      call.calledDate = cb_.calledDate; 
      call.callback1 = cb_.callback1; 
      call.notes = cb_.notes; 

     try 
     { 
      context.SubmitChanges(); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e); 
     } 
    } 

答えて

4

このpostはあなたと似ています。

テーブルにプライマリキーがないため、更新が機能しませんでした。

CallbackIdがデータベースにPKとして定義されていることを確認しましたか?

+0

私もこの問題を抱えています。 – Blorgbeard

+0

明快にするために、ここで重要なデータベース内の主キーの存在ではなく、レコードを一意に識別する1つ以上の列がLinq-to-SQLデザイナーで主キーとしてマークされているかどうか。言い換えれば、データベースにPKがなくても、主キーとして論理的にPKとして機能することができるマーキングカラムで十分です。 – KristoferA

+0

..あなたはデザイナーでそれを行うことができますか? arg! – Blorgbeard

0

ただちに飛び出すことはありません。 DataContextのLogプロパティを使用して、生成されるSQLを確認すると便利です。

は、デバッグしているときは、その後、Visual Studioのデバッグウィンドウに出力するために、次のコードSQLのようなものを使用することができhttp://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.log.aspx

を参照してください。

/// <summary> 
/// Implementation of a <see cref="TextWriter"/> that outputs to the debug window 
/// </summary> 
public class DebugTextWriter : TextWriter 
{ 
    public override void Write(char[] buffer, int index, int count) 
    { 
     System.Diagnostics.Debug.Write(new string(buffer, index, count)); 
    } 

    public override void Write(string value) 
    { 
     System.Diagnostics.Debug.Write(value); 
    } 

    public override Encoding Encoding 
    { 
     get { return System.Text.Encoding.Default; } 
    } 
} 
関連する問題