Вы используете Dapper.Contrib, и ваша база данных MS Access.Ваш вызов INSERT генерирует два SQL-запроса.Сначала, как вы ожидаете, вставьте запись.Второй находится за экраном для получения вновь сгенерированного идентификатора.
Итак, сгенерированные запросы выглядят примерно так:
INSERT INTO Table (......) VALUES (....);
SELECT @@IDENTITY";
Оба эти запроса выполняются в одном цикле.И это не поддерживается MS Access.MS Access не понимает символы после точки с запятой, т.е. SELECT @@IDENTITY";
.
Пожалуйста, укажите эту ссылку.
Ядро базы данных Jet не поддерживает выполнениенескольких операторов в пакете или использования выходных параметров, поэтому невозможно использовать ни один из этих методов для возврата нового значения Autonumber
, назначенного вставленной строке.
Решение состоит в том, чтобыотдельно выполнить эти два запроса ИЛИ не выполнять второй запрос;обращаться с этим по-другому.НО, вы используете Contrib, и он генерирует запрос для вас.Таким образом, вы можете сделать совсем немного (измените код Contrib самостоятельно).
Честно говоря, я не знаю решения для этого.Я никогда не использовал Dapper.Contrib.Может быть, это исправлено в более новой версии.Или может быть, что Contrib не поддерживает MS Access.Я просто пытался объяснить вам проблему.Пожалуйста, обратитесь к этому другому ответу , в котором обсуждается та же проблема, но вместо этого с Dapper Extensions.