如何获得通过Dapper输入的最后一个ID?

时间:2019-03-19 09:18:19

标签: c# asp.net-mvc oracle dapper

我正在查询DB Oracle,并想返回输入的ID。我使用一个自动为我生成下一个ID的序列。我已经尝试过了,但是有一个“ ORA-00933 sql命令错误终止”异常。有什么错误?谢谢

public async Task<int> InsertSESSIONUSER_TAsync(SESSIONUSER_T obj)
    {
        string sql = "INSERT INTO SESSIONUSER_T (ID, USERNAME,PASSWORD,LOCALE,TIMEZONEID,EMAIL,CREATIONDATE, EMAILPEO) VALUES (USER_SEQUENCE.NEXTVAL,'TEMP',:PASSWORD,:LOCALE,:TIMEZONEID,:EMAIL,:CREATIONDATE,:EMAILPEO); SELECT CAST(SCOPE_IDENTITY() as int)";
        using (OracleConnection cnn = DBCConnectionFactory.Getconnection())
        {
            try
            {
                cnn.Open();
                int row = await cnn.ExecuteAsync(sql, obj);
                var result = await cnn.QueryAsync<int>(sql, obj);
                return result.Single();

            }
            catch (Exception ex)
            {
                ApplicationLogger.Logger.Error(ex, "InsertSESSIONUSER_TAsync");

            }
            finally
            {
                if (cnn?.State == System.Data.ConnectionState.Open)
                {
                    cnn.Close();
                }

            }
            return -1;
        }
    }

3 个答案:

答案 0 :(得分:0)

您的SQL必须具有2个子句。插入和选择最后插入的ID。这与DBMS无关,例如,在MySQL中,它将类似于:

if (jQuery.inArray(event.target.category, chart_1_1_checkx) != -1) {}

在应用程序方面,您必须使用Dapper的扩展方法this.series.chart.tooltip.hide() $(this.series.chart.tooltip).hide() this.series.chart.tooltip.div.hide() 。例如:

INSERT INTO <table> (...) VALUES (...); SELECT last_insert_id();

答案 1 :(得分:-2)

insert into your_table (...)
output INSERTED.(column name) 
values (...)

答案 2 :(得分:-2)

发布已解决!我使用了交易,一切正常! ;)