Получение идентификатора вставленной строки - PullRequest
1 голос
/ 20 января 2012

Я пытаюсь получить идентификатор вновь вставленной записи из базы данных, используя предложение вывода sql, т.е.

insert into table1(forename, surname) output inserted.id values(@forename, @surname)

, и я пытаюсь захватить идентификатор следующим образом:

Int32 id = (int)command.ExecuteScalar;

Это дает мне сообщение об ошибке:

Compiler Error Message: CS0428: Cannot convert method group 'ExecuteScalar' to non-delegate type 'int'. Did you intend to invoke the method?

Не уверен, что я делаю не так.

Вот большой фрагмент существующего кода:

using (connection = new SqlConnection(ConfigurationManager.AppSettings["connString"]))
{
    using (command = new SqlCommand("insert into table1(forename, surname) OUTPUT INSERTED.ID values(@forename, @surname)", connection))
    {
        command.Parameters.Add("@forename", SqlDbType.VarChar, 255).Value = forename;
        command.Parameters.Add("@surname", SqlDbType.VarChar, 255).Value = surname;

        command.Connection.Open();
        id = (int)command.ExecuteScalar;
    }
}

Ответы [ 2 ]

5 голосов
/ 20 января 2012

Попробуйте id = (int) command.ExecuteScalar().Вы только что оставили парены.

3 голосов
/ 20 января 2012

ExecuteScalar - это метод, поэтому вы должны поместить список аргументов после него: ExecuteScalar ().

Каждый раз, когда вы получаете ошибку о MethodGroups, это, вероятно, ошибка.

...