У меня есть простая консоль C#, которая использует ORM Dapper, чтобы позвонить в локальную базу данных MySql, чтобы выполнить хранимую процедуру с именем users.UserCreate
.Dapper или MySql не обнаруживают хранимые процедуры, содержащие полную остановку "."
Однако при выполнении запроса я получаю исключение, говоря
процедура или функция «UserCreate» не может быть найден в базе данных «пользователи»
Но users
не база данных local_db
является ,
Вот пример использования:
public virtual Task CreateAsync(User user)
{
using (var con = new MySqlConnection(_dbConn))
return con.ExecuteAsync("users.UserCreate", user, commandType: CommandType.StoredProcedure);
}
_dbConn содержит строку соединения, а также с указанием имени базы данных как local_db
.
Это то, что хранимая процедура выглядит следующим образом:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `users.UserCreate`(IN `@UserId` VARCHAR(128), IN `@UserName` VARCHAR(255), IN `@PasswordHash` LONGTEXT, IN `@SecurityStamp` LONGTEXT)
NO SQL
INSERT INTO Users
(Id, UserName, PasswordHash, SecurityStamp, EmailConfirmed, PhoneNumberConfirmed, TwoFactorEnabled, LockoutEnabled, DateCreated, DateUpdated, IsDeleted)
VALUES
(@UserId, @UserName, @PasswordHash, @SecurityStamp, 0, 0, 0, 0, CURRENT_DATE, CURRENT_DATE, 0)$$
DELIMITER ;
Есть проблема что-то делать с MySql или Dapper? Я использую аналогичное соглашение об именах для хранимых процедур в SQL Server, также используя Dapper, и не имел этой проблемы раньше.
Я попытался:
- Использование "local_db.users.UserCreate"
- Использование "local_db.UserCreate"
- Использование "UserCreate"
Есть идеи?
'con.ExecuteAsync (\' users.UserCreate \ '...'? – stuartd
Я думаю, что экранирование имени процедуры сделает трюк. Попробуйте написать '' 'users.UserCreate'''' 'будет указывать строку является единственным идентификатором. –
Я просто получаю ошибку «неожиданного персонажа» в визуальной студии, если я просто завершу имя в 'users.UserCreate' с помощью' 'идентификаторов. Также попробовал« user.UserCreate »с ними, заключенными в кавычки (избавился от ошибки VS), а также @ "user.UserCreate' и @" users.UserCreate ". Все еще нет радости – Dezzamondo