【问题标题】:ASP.NET tableadapter insert not returning the correct identity valueASP.NET tableadapter 插入未返回正确的标识值
【发布时间】:2009-08-09 20:20:37
【问题描述】:

在我的 Visual Studio 2008 ASP.NET 网页代码隐藏中,我在 SQL 表适配器中调用添加例程,如下所示。

NewLabID = LabItem.AddLaborItem(ThisWONum, TechID, DateTime.Now, DateTime.Now, "Working", "");

记录已正确添加,但“NewLabID”每次都返回 1,而不是实际的新 LabID(LabID 定义为 int/identity)。自动生成的代码插入命令是

INSERT INTO [LaborDetail] ([WONum], [TechID], [StartDate], [StopDate], [OtherType], [OtherDesc])
VALUES (@WONum, @TechID, @StartDate, @StopDate, @OtherType, @OtherDesc);
SELECT LabID FROM LaborDetail WHERE (LabID = SCOPE_IDENTITY())

调用它的自动生成代码是:

returnValue = command.ExecuteNonQuery();

使用调试器单步执行,returnValue 始终为 1。上述命令不应该返回新的标识字段值吗?

【问题讨论】:

    标签: c# asp.net sql-server


    【解决方案1】:

    ExecuteNonQuery 返回受影响的行数。你会想要使用 ExecuteScalar() 来代替。

    【讨论】:

    • 谢谢 - 但我如何让 asp.net 自动生成 ExecuteScalar 而不是 ExecuteNonQuery?自动生成的命令显然旨在返回新 ID。
    • 好的,我明白了 - 我必须在表适配器中更改查询的 ExecuteMode 属性。
    猜你喜欢
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多