小编Lex*_*Lex的帖子

c# 检索事务中插入的 ID

我想在事务中插入一堆插入内容,以便在出现任何错误时可以回滚。现在我的问题是,对于某些插入,我需要前一个插入的 ID。但是,这样做var id = (int)command.ExecuteScalar();会引发异常(“对象引用未设置为对象的实例”)。如果我运行command.ExecuteScalar()而不尝试分配结果,则代码工作得很好。是否可以在提交交易之前获取 ID?如果不是,我的替代方案是什么?

我的代码:

using (SqlConnection connection = new SqlConnection("ConnectionHere")
{
            connection.Open();

            SqlCommand command = connection.CreateCommand();
            SqlTransaction transaction;

            // Start a local transaction.
            transaction = connection.BeginTransaction();
            command.Connection = connection;
            command.Transaction = transaction;

            try
            {                    
                string insertStudent = "INSERT INTO Students (FirstName, MiddleName, LastName)" +
                " VALUES (@firstName, @middleName, @lastName)";

                command.CommandText = insertStudent;
                command.Parameters.AddWithValue("@firstName", application.FirstName);
                command.Parameters.AddWithValue("@middleName", application.MiddleName);
                command.Parameters.AddWithValue("@lastName", application.LastName);

                var id = (int) command.ExecuteScalar();//EXCEPTION THROWN HERE

                // Attempt to commit the transaction.
                transaction.Commit();
            } …
Run Code Online (Sandbox Code Playgroud)

c# sql-server asp.net transactions rollback

5
推荐指数
1
解决办法
4788
查看次数

标签 统计

asp.net ×1

c# ×1

rollback ×1

sql-server ×1

transactions ×1