2011-06-07 48 views
3

我想公开一个WCF服务操作,该操作会在数据库中发送新记录。每次调用该操作时,都应该返回一个DataSet对象,该对象只包含自上次操作被调用以来已添加到数据库的行。公开包含更改跟踪的持久数据集

我的问题是这是否可能通过序列化DataSet之间的调用,然后使用GetChanges()和AcceptChanges()方法。

IE(伪),

[OperationContract] 
public DataSet GetDataSet() 
{  
     DataSet ds = LoadDataSet(); // load a dataset from saved xml or binary 

     DataSet newDs = GetRecordsFromDatabase(); // load dataset from database 

     ds.Merge(newDs, true); // somehow recognize which records in the newDs 
           // load are new? 
     return ds.GetChanges(); 
} 
+0

如果您可以识别请求数据集的用户。您可以为每个用户存储数据集中的记录数量。然后,您可以使用计数选择之后添加的所有记录。这仅在数据集被排序时才有效。 – albertjan 2011-06-07 07:20:51

+0

是的我正在做这样的事情,使用存储每个实体/数据库视图的最新条目的LIFO栈。只是想知道这种持久数据集概念是否可行。 – 2011-06-07 18:06:12

回答

0

尝试:

ds.GetChanges(DataRowState.Added) 

我的建议: 不要序列数据集。也许你可以保留你插入的最后一个记录的ID。

Regards, M.