트랜잭션에서 LAST_INSERT_ID 가져 오기

asp.net-mvc asp.net-mvc-5 dapper

문제

다음 코드가 있습니다.

                using (MySqlConnection connection = new MySqlConnection(this.connectionString))
                {
                    connection.Open();
                    using (MySqlTransaction transaction = connection.BeginTransaction())
                    {
                        var r = connection.Execute(@"INSERT INTO tableA (`listId`, `parentListId`, `name`, `userId`)
                            VALUES
                            (NULL, @parentListId, @name, @userId);

                            INSERT INTO `tableA_misc` (`listId`, `userId`, `permissions`)
                            VALUES
                            (LAST_INSERT_ID(), @ownerId, 'Read');

                            SELECT CAST(LAST_INSERT_ID() AS UNSIGNED INTEGER);",
                        new {
                            parentListId = _parentListId,
                            name = _name,
                            userId = _currentUser.user_id
                        }, transaction);
                        transaction.Commit();
                    }
                }

r 은 삽입 된 행의 수만 반환하기 때문에 어떻게 the LAST_INSERT_ID() 검색 할 수 있습니까?

고맙습니다

수락 된 답변

이것을 고정으로 변경 :

 using (MySqlConnection connection = new MySqlConnection(this.connectionString))
                {
                    connection.Open();
                    using (MySqlTransaction transaction = connection.BeginTransaction())
                    {
                        var lastId = connection.Query<int>(@"INSERT INTO tableA (`listId`, `parentListId`, `name`, `userId`)
                            VALUES
                            (NULL, @parentListId, @name, @userId);

                            INSERT INTO `tableA_misc` (`listId`, `userId`, `permissions`)
                            VALUES
                            (LAST_INSERT_ID(), @ownerId, 'Read');

                            SELECT CAST(LAST_INSERT_ID() AS UNSIGNED INTEGER);",
                        new {
                            parentListId = _parentListId,
                            name = _name,
                            userId = _currentUser.user_id
                        }, transaction);
                        transaction.Commit();
                    }
            }


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.