刷新强类型数据集
本文关键字:数据集 强类型 刷新 | 更新日期: 2023-09-27 18:01:40
我有一个强类型数据集,它调用一些存储过程。在一种情况下,我使用强类型数据集在数据库中添加了一些数据。数据被添加到数据库中,但由于某些原因,没有显示新数据。
这让我相信我必须在添加新项后以某种方式刷新强类型数据集。我不确定我应该在这里张贴什么代码,但我将张贴的代码,将元素添加到数据库:
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)
正如我已经提到的,这是有效的。新条目被添加到数据库中,但它们不显示
如果数据库中的底层数据发生了变化,那么将该信息加载到数据集中的唯一方法就是手动加载。根据您的需要,这里有几个选项:
- 您可以丢弃现有的数据,并从数据适配器重新填充数据集。
- 您可以加载数据集的第二个副本,并使用
DataSet.Merge
来引入任何更改。 - 你可以直接添加你的新行到数据集中。
然而,当您使用强类型数据集时,您的目的是在添加新行时使用该对象,而不是通过表适配器将它们添加到数据库。当向数据集中的表中添加新行时,它在内存中被跟踪为"已添加"。然后,当您通过表适配器将该数据集的更改保存回数据库时,该数据集将调用表的适当InsertCommand
或UpdateCommand
。这样,你的数据库和数据集就同步了。
-
dataAdapter.Fill(dataset)
- (通过类型化数据行对类型化数据集进行更改)
-
dataChanges = dataSet.GetChanges()
-
dataAdapeter.Update(dataChanges)
-
dataSet.Merge(dataChanges)
-
dataSet.AcceptChanges()