【发布时间】:2011-08-29 06:10:49
【问题描述】:
我正在使用数据集。我有一个名为 PackageTableAdapter 的表适配器,其中包含一个名为 InsertPackage 的方法。
INSERT INTO [dbo].[Packages] ([UserID], [Name]) VALUES (@UserID, @Name)
//Return the PackageID value for the newly created record...
SELECT SCOPE_IDENTITY()
这个表适配器被一个中间层类使用,代码如下:
private PackagesTableAdapter _packagesTableAdapter = null;
protected PackagesTableAdapter Adapter
{
get
{
if (_packagesTableAdapter == null)
_packagesTableAdapter = new PackagesTableAdapter();
return _packagesTableAdapter;
}
}
public bool AddPackage(string PackageName)
{
// Create a new PackageRow instance
Album.PackagesDataTable packages = new AlbumCongo.PackagesDataTable();
Album.PackagesRow package = packages.NewPackagesRow();
// Add the new package
package.Name = PackageName;
packages.AddPackagesRow(package);
int rowsAffected = Adapter.Update(packages);
// Return true if precisely one row was inserted,
// otherwise false
return rowsAffected == 1;
}
如何捕获新创建的包的主键(应该由 SELECT SCOPE_IDENTITY() 语句返回的那个)?
编辑
我想返回一个自定义对象,而不是返回一个 bool 值,该对象既包含 bool 值,又包含一个表示新创建行的 ID 的 int。
感谢您的帮助。
【问题讨论】:
-
如果您使用数据适配器,您可以查看:msdn.microsoft.com/en-us/library/ks9f57t0.aspx。不过,您可能不得不争论自己的自定义对象。
-
在代码中,有一种方法可以告诉您有多少行受到影响。有没有一种简单的方法可以检索新创建的 ID?
标签: c# asp.net dataset tableadapter