Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在使用作用域标识时遇到一些问题_C#_Sql_Sql Server_Scope Identity - Fatal编程技术网

C# 在使用作用域标识时遇到一些问题

C# 在使用作用域标识时遇到一些问题,c#,sql,sql-server,scope-identity,C#,Sql,Sql Server,Scope Identity,我有两个表,一个包含名称,另一个包含费率和其他数据,每个名称对应一行。在我向表a中插入一个新名称之后,我想获得新的自动生成的PK,现在使用它插入到我的另一个表B中 我该怎么做?我在网上读到了scope\u identity,但我不知道如何使用它 这就是我到目前为止所做的: SqlConnection con = new SqlConnection(pubvar.x); SqlCommand command = con.CreateCommand(); command.CommandText =

我有两个表,一个包含名称,另一个包含费率和其他数据,每个名称对应一行。在我向表a中插入一个新名称之后,我想获得新的自动生成的PK,现在使用它插入到我的另一个表B中

我该怎么做?我在网上读到了
scope\u identity
,但我不知道如何使用它

这就是我到目前为止所做的:

SqlConnection con = new SqlConnection(pubvar.x);

SqlCommand command = con.CreateCommand();
command.CommandText ="Insert into A values('" +Name + "')";

SqlCommand command2 = con.CreateCommand();
command2.CommandText = "Insert into B values(....)";

SELECT SCOPE_IDENTITY();

con.Open();
command.ExecuteNonQuery();
con.Close();

考虑到您描述的情况,我认为不需要从数据库返回标识。您只需在一个命令中发出这两条语句:

using (var cnx = new SqlConnection(pubvar.x))
using (var cmd = new SqlCommand
{
    Connection = cnx,
    CommandText = @"
    insert into A (Name) values (@name)
    insert into B (A_ID, Rate) values (scope_identity(), @rate)
    ",
    Parameters =
    {
        new SqlParameter("@name", name),
        new SqlParameter("@rate", .5m) //sample rate
    }
})
{
    cnx.Open();
    cmd.ExecuteNonQuery();
}

不确定我是否正确理解了你的问题。但您的代码似乎是c#和SQL的组合。SCOPE\u Identity为您提供最近在当前作用域中生成的标识值。如果您可以将这些语句包含在过程中,它将起作用。“将这些语句包含在过程中”是什么意思?创建一个过程并按顺序执行上述步骤。。例如:1.插入表A;2.将scope_identity()赋值给变量;3.通过更好地利用变量插入表B;储存的procedure@Limey他知道存储过程是什么。