c# - 数据集:如何抓取SELECT SCOPE_IDENTITY()返回的主键值?

标签 c# asp.net dataset tableadapter

我正在使用数据集。我有一个名为 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 的整数。

感谢您的帮助。

最佳答案

首先,您必须将插入方法的返回类型设置为Scaler。您也可以通过右键单击 insert Method properties 的属性来执行此操作。

其次,您可以通过调用 Adapter 方法 来获取 ID,如下所示:

Int32 ID = Convert.ToInt32(Adapter.Insert(parameters...);

关于c# - 数据集:如何抓取SELECT SCOPE_IDENTITY()返回的主键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6065459/

相关文章:

c# - 使用 count() 优化 linq 查询

c# - 从 DataGridView 获取数据到图表

python - 复杂数据集拆分 - StratifiedGroupShuffleSplit

c# - 在 foreach 循环中修改集合时出现异常

c# - 我应该在 DuplexClientBase 构造函数的 "endpointConfigurationName"中指定什么?

c# - 使用反射有条件地循环遍历属性

machine-learning - 在哪里可以找到一组带有真实标签的良好基准聚类数据集?

c# - REST with .NET 使用默认处理程序

c# - Server.Transfer 导致 Session 异常

jquery - ASP.NET MVC 5 中的日期格式问题