-1

我正在使用动态 sql 将数据插入动态表(.NET C#)。我需要获取标识列值作为回报,我尝试使用 scope_identity 但结果始终显示 1。

这是我的代码

dqDbContext dqx = new dqDbContext();
string queryHdr = "INSERT INTO " + tableHdrName + " VALUES ("
                        + configId + ",'Administrator',GETDATE()); SELECT SCOPE_IDENTITY();";

int id = dqx.Database.ExecuteSqlCommand(queryHdr);

我在这里想念什么吗?

谢谢

菲利克斯

4

2 回答 2

2

您可以SqlQuery改用,例如:

var identity = ctx.Database
    .SqlQuery<int>(@"INSERT INTO MyTable (Column1) VALUES ('MyValue');
        SELECT CAST(SCOPE_IDENTITY() AS INT)")
    .Single();
于 2018-02-06T14:20:27.150 回答
0

add SET NOCOUNT ON;, I think you getting the value 1 is number of rows affeted.

string queryHdr = @"SET NOCOUNT ON; 
                    INSERT INTO " + tableHdrName + " VALUES ("
                         + configId + @",'Administrator',GETDATE());
                    SELECT SCOPE_IDENTITY();";
于 2015-02-12T10:51:53.787 回答