2009-06-19 12 views
1

私はVisual Studio 2008 Proソリューションで.xsdファイルを使用していますが、テーブルアダプターメソッドのExecuteModeプロパティーのリセットに問題があります。私は、複数のアダプタでいくつかの挿入メソッドを作成しました。私は新しいレコードのIDを返すために、挿入SQLの後に "SELECT SCOPE_IDENTITY()"を使用します。次に、ExecuteModeプロパティをScalar(NonQueryから)に更新します。毎回、ExecuteModeがNonQueryに戻ってくることがわかります。なぜ私は理解できません。私は仕事に変化につながるパターンを気付かなかった。いずれかの仲間.Netオタクのアイデアはありますか?TableAdapterのメソッドは、スカラーからNonQueryへのリセットを維持します

+0

あなたの質問を表示できますか? –

+0

実際のクエリは問題ではないと思います。なぜなら、これはxsd全体の多くの挿入クエリに起こったからです。 – Brian

答えて

0

私はこれをVSのバグか誤った環境設定のいずれかとしました。私は何が起こったかを一貫して再現することができず、解決策を見つけることができませんでした。それは非常に無作為で、私はそれが一握りの時間以上の問題であることを思い出すことができません。

-1

値を挿入するSQLを使用し、スカラー値を返すSQLではなく新しいレコードを選択してIDを取得する必要があります。

「TableAdapter Configuration Wizard」は、「コマンド・タイプの選択」ステップで「新規ストア・プロシージャの作成」を選択し、「ストア・プロシージャの選択にSQL文を入力する」ステップで「Advanced 「オプション」で「挿入、更新...を生成」および「データテーブルを更新」とマークします。ニュース手順の名前をウィザードの残りの部分に記入してください。

生成されたSQLは、TableAdapterのを使用して、この

INSERT INTO [apptbl] ([Id]) VALUES (@Id); 
SELECT Id FROM apptbl WHERE (Id = SCOPE_IDENTITY()) 

ような何か...のDataRowオブジェクトが原因の新しいIDで「アダプターによって」満たされること

public int insert_newObj() 
    { 
      objDataTable dt = new objDataTable(); 
      objRow dr = dt.NewObjRow();   

      // assign values to others fields, except the id... 

      dt.AddObjRow(dr); 

      Adapter.Update(dt); 

      return dr.Id; 
    } 

注意ですストア・プロシージャー内の2番目のSQLステートメント(SELECT ...)。

私はあなたのSQLを見ていないために役立つかどうかはわかりませんが、これはIDを取得するのに非常に一般的な方法です。

関連する問題