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

Linq to sql 如何在Linq to Sql自定义Sql表达式中获取最后插入的id?,linq-to-sql,tsql,Linq To Sql,Tsql,这是我的问题。 我想使用Linq to sql中的自定义sql表达式获取最后一个插入的Id 我的插入方法: public int Add(string Label) { _dbContext.ExecuteCommand("INSERT INTO Products (Label) VALUES (@Label);", Label); _dbContext.SubmitChanges(); var lastId = _dbContext.ExecuteQuery<

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

我的插入方法:

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;
}
public int Add(字符串标签)
{
_dbContext.ExecuteCommand(“插入产品(标签)值(@Label);”,标签);
_dbContext.SubmitChanges();
var lastId=_dbContext.ExecuteQuery(“选择Scope_Identity()作为[Scope_Identity];”).ToList()[0];
返回lastId;
}
lastId总是返回null。当我直接在Sql Server中尝试此查询(Insert+Select)时,它工作正常,并返回最后插入的Id。 我不想使用过程,也不能使用新的产品对象(我不可能使用InsertOnSubmit或其他任何东西)

你能帮帮我吗? 谢谢。

尝试使用:

INSERT INTO Products (Label) OUTPUT inserted.ProductID VALUES (@Label);
Rob

尝试使用:

INSERT INTO Products (Label) OUTPUT inserted.ProductID VALUES (@Label);

Rob

好的,我找到了方法:

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;
}
public int Add(字符串标签)
{
var query=String.Format(“插入产品(标签)值(@Label);从ProductId=Scope_Identity();”的产品中选择ProductId,Label”);
var lastId=_dbContext.ExecuteQuery.ToList()[0];
返回lastId;
}

好的,我找到了方法:

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;
}
public int Add(字符串标签)
{
var query=String.Format(“插入产品(标签)值(@Label);从ProductId=Scope_Identity();”的产品中选择ProductId,Label”);
var lastId=_dbContext.ExecuteQuery.ToList()[0];
返回lastId;
}

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

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;
}
public int Add(字符串标签)
{
var query=String.Format(“插入产品(标签)值(@Label);”,标签);
_dbContext.ExecuteCommand(查询);
var lastId=_dbContext.ExecuteQuery(“选择当前标识('Products')”)).First();
返回lastId;
}

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

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;
}
public int Add(字符串标签)
{
var query=String.Format(“插入产品(标签)值(@Label);”,标签);
_dbContext.ExecuteCommand(查询);
var lastId=_dbContext.ExecuteQuery(“选择当前标识('Products')”)).First();
返回lastId;
}

谢谢您的回复。但它不起作用。我无法检索变量中的输出。感谢您的回复。但它不起作用。我无法检索变量中的输出。