2013-03-01 61 views
2

我有一個強類型數據集調用一些存儲procedures.In一個情況下,我在數據庫中使用強類型數據set.The數據被添加到數據庫,但由於某些原因,新添加一些數據數據未被顯示。刷新一個強類型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) 

正如我已經提到這個works.The新項目被添加到數據庫,但它們不會顯示

回答

3

如果數據庫中的基礎數據已更改,則將該信息加載到數據集中的唯一方法是手動加載它。根據您的需求,您可以在此選擇幾種選擇:

  • 您可以丟棄現有數據並從數據適配器重新填充數據集。
  • 您可以加載數據集的第二個副本,並使用DataSet.Merge中的任何變化帶來。
  • 您可以只需添加新行插入到數據集直接。

但是,當你使用強類型數據集,目的是爲你添加新行的時候,通過表適配器將它們添加到數據庫中使用該對象。當您將新行添加到數據集中的表中時,它會在內存中被追蹤爲「已添加」。然後當您通過您的表適配器保存從數據集回數據庫的變化,該數據集將調用一切適當的InsertCommandUpdateCommand是對錶。這樣,您的數據庫和數據集就會同步。

使用類型化數據集通常有以下幾個步驟,他爲了工作流程。你可以得到相當複雜與合併決議的邏輯,以及如何處理衝突,但基本思路是一樣的:

  • dataAdapter.Fill(dataset)
  • (請通過鍵入的數據行更改您的類型化的DataSet)
  • dataAdapeter.Update(dataChanges)
  • dataSet.Merge(dataChanges)
  • dataSet.AcceptChanges()
+0

要開始,只是在TA配置更新查詢中使用存儲過程。然後編寫代碼將新行添加到數據集,並在TA上調用更新。根據您的情況,您可能會也可能不需要邁克爾答案中的完整GetChanges工作流程。如果你是ADO.Net的新手,我會嘗試先熟悉簡單的方法。 – peterG 2013-03-03 16:38:53