在LINQ中执行SQL时返回id字段

时间:2011-05-10 15:37:29

标签: linq

我正在尝试使用LINQ执行SQL插入查询并返回ID字段。我的代码不起作用,任何人都可以告诉我我的语法是否错误?

string query = "insert into EnvironmentalReportDepts ";
                query += "(fkDeptID, OrderNumber, fkEnvironmentalReportID) ";
                query += "values(" + tmpDeptReport.fkDeptID + ", " + tmpDeptReport.OrderNumber + ", " + tmpDeptReport.EnvironmentalReport.EnvironmentalReportID + ") ";
                query += "select scope_identity()";

                var newDeptID = _database.ExecuteQuery<int>(query).ToList()[0];

2 个答案:

答案 0 :(得分:2)

尝试更改

query += "select scope_identity()";

query += "; select scope_identity()";

此外,您可能必须使用

 _database.ExecuteQuery<decimal>(query).ToList()[0];

答案 1 :(得分:0)

将查询更改为:

string query = "DECLARE @scope_identity int"; 
query += "insert into EnvironmentalReportDepts ";               
query += "(fkDeptID, OrderNumber, fkEnvironmentalReportID) ";                 
query += "values(" + tmpDeptReport.fkDeptID + ", " + tmpDeptReport.OrderNumber + ", " + tmpDeptReport.EnvironmentalReport.EnvironmentalReportID + ") ";
query += "SET @scope_identity=@@IDENTITY";                 
query += "select @scope_identity";