我有一个强类型的dataSet调用一些存储过程。在一种情况下,我使用强类型数据集在数据库中添加一些数据。数据被添加到数据库但由于某种原因,新数据没有显示
这让我相信在添加新项目后我必须以某种方式刷新强类型数据集。我不知道我应该在这里发布什么代码但是我会发布将元素添加到数据库的代码:< / p>
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)
正如我已经提到的那样有效。新项目会被添加到数据库中,但不会显示
答案 0 :(得分:3)
如果数据库中的基础数据已更改,则将该信息加载到数据集中的唯一方法是手动加载它。根据您的需要,您有几种选择:
DataSet.Merge
进行任何更改。但是,当您使用强类型数据集时,目的是在添加新行时使用该对象,不以通过表适配器将它们添加到数据库中。向数据集中的表添加新行时,会在内存中将其追踪为“已添加”。然后,当您通过表适配器将更改从该数据集保存回数据库时,数据集将调用表中适当的InsertCommand
或UpdateCommand
。这样,您的数据库和数据集就会同步。
使用类型化数据集的工作流程通常按顺序执行以下步骤。您可以通过合并解析逻辑以及如何处理冲突来使用相当复杂,但基本思想是相同的:
dataAdapter.Fill(dataset)
dataChanges = dataSet.GetChanges()
dataAdapeter.Update(dataChanges)
dataSet.Merge(dataChanges)
dataSet.AcceptChanges()