2

いくつかのストアド プロシージャを呼び出す、厳密に型指定された dataSet があります。あるケースでは、厳密に型指定されたデータ セットを使用してデータベースにデータを追加します。データはデータベースに追加されますが、何らかの理由で新しいデータが表示されません。

これにより、新しいアイテムを追加した後、強く型付けされたデータセットを何らかの方法で更新する必要があると思われます。ここに投稿するコードはわかりませんが、要素をデータベースに追加するコードを投稿します。

var addBookAdapter = new QueriesTableAdapter();           

addBookAdapter.AddBook(book.Name,book.Author,book.Description,book.PublicationDate,book.CategoryId);

これを行うストアド プロシージャは次のとおりです。

CREATE PROCEDURE [dbo].[AddBook]
    @Name nvarchar(MAX),
    @Author nvarchar(MAX),
    @Description nvarchar(MAX),
    @Date date  ,
    @CategoryId int
AS
    INSERT INTO Books (Name , Author , Description , PublicationDate , CategoryId)
    VALUES (@Name , @Author , @Description , @Date , @CategoryId)

すでに述べたように、これは機能します。新しいアイテムはデータベースに追加されますが、表示されません

4

1 に答える 1

4

データベースの基礎となるデータが変更された場合、その情報をデータセットにロードする唯一の方法は、手動でロードすることです。必要に応じて、いくつかのオプションがあります。

  • 既存のデータを破棄し、データ アダプターからデータ セットを再入力できます。
  • データセットの 2 番目のコピーを読み込み、DataSet.Merge変更を取り込むために使用できます。
  • 新しい行をデータセットに直接追加するだけです。

ただし、厳密に型指定されたデータ セットを使用している場合、テーブル アダプターを介してデータベースに追加するのではなく、新しい行を追加するときにそのオブジェクトを使用することを意図しています。データ セット内のテーブルに新しい行を追加すると、メモリ内で "追加" として追跡されます。次に、そのデータセットからの変更をテーブル アダプターを介してデータベースに保存しようとすると、データセットは適切なものInsertCommandまたはUpdateCommandテーブルに適したものを呼び出します。このようにして、データベースとデータセットが同期されます。

型指定されたデータセットを使用するためのワークフローには、通常、彼の順序で次の手順があります。マージ解決ロジックと競合の処理方法はかなり複雑になる可能性がありますが、基本的な考え方は同じです。

  • dataAdapter.Fill(dataset)
  • (型指定されたデータ行を介して、型指定されたデータセットを変更します)
  • dataChanges = dataSet.GetChanges()
  • dataAdapeter.Update(dataChanges)
  • dataSet.Merge(dataChanges)
  • dataSet.AcceptChanges()
于 2013-03-01T15:17:37.990 に答える