首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Linq to Sql自定义sql表达式中获得最后插入的id?

如何在Linq to Sql自定义sql表达式中获得最后插入的id?
EN

Stack Overflow用户
提问于 2009-08-03 07:06:11
回答 3查看 4.7K关注 0票数 1

这就是我的问题。我想用Linq to Sql中的自定义sql表达式来获取最后插入的Id。

我的insert方法:

代码语言:javascript
运行
复制
public int Add(string Label)
{
    _dbContext.ExecuteCommand("INSERT INTO Products (Label) VALUES (@Label);", Label);

    _dbContext.SubmitChanges();

    var lastId = _dbContext.ExecuteQuery<int>("SELECT Scope_Identity() as [Scope_Identity];").ToList()[0];

    return  lastId;
}

lastId总是返回null。当我在Sql Server中直接尝试这个查询(Insert + Select)时,它工作得很好,并返回最后插入的Id。我不想使用过程,也不能使用新的Product对象(我不可能使用InsertOnSubmit或其他任何东西)。

你能帮帮我吗?谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-05 06:30:31

好的,我已经知道怎么做了:

代码语言:javascript
运行
复制
public int Add(string Label)
{
   var query = String.Format("INSERT INTO Products (Label) VALUES (@Label); SELECT ProductId FROM Products WHERE ProductId = Scope_Identity();", Label);

   var lastId = _dbContext.ExecuteQuery<int>(query).ToList()[0];

   return  lastId;
}
票数 1
EN

Stack Overflow用户

发布于 2009-08-03 07:26:27

尝试使用:

代码语言:javascript
运行
复制
INSERT INTO Products (Label) OUTPUT inserted.ProductID VALUES (@Label);

抢夺

票数 0
EN

Stack Overflow用户

发布于 2012-03-27 23:56:27

我知道你已经回答了,但我发现还有另一种方法,它对我的特定场景很有用,需要编辑添加到表中的最新记录,而不需要知道这些记录的I:

代码语言:javascript
运行
复制
public int Add(string Label)
{
    var query = String.Format("INSERT INTO Products (Label) VALUES (@Label);", Label);
    _dbContext.ExecuteCommand(query);
    var lastId = _dbContext.ExecuteQuery<int>("SELECT IDENT_CURRENT('Products ')").First();


    return  lastId;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1220992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档