Dapper: неявное преобразование из типа данных datetime в int недопустимо. Используйте функцию CONVERT, чтобы выполнить этот запрос - PullRequest
0 голосов
/ 27 октября 2019

У меня есть этот запрос для вставки пользователя в базу данных:

INSERT INTO [User] 
OUTPUT inserted.Id 
VALUES (@IsDelete, @FirstName, @LastName, @UserName, @Email, @Birthdate, @IsActive, @Password, @SecurityStamp, @Gender, @ActivetionCode, @ActivationCodeExpireDateTime)

, и это моя модель:

User user = new User();
user.Email = request.Email;
user.IsDelete = false;
user.IsActive = false;
user.Birthdate = DateTime.UtcNow;
user.FirstName = "user" + DateTime.Now.Millisecond;
user.LastName = "failmy" + DateTime.Now.Millisecond;
user.Password = request.Password;
user.UserName = request.UserName;
user.Gender = GenderEnum.Male;
user.SecurityStamp = Guid.NewGuid();
user.ActivetionCode = code;
user.ActivationCodeExpireDateTime = DateTime.UtcNow;

, и я использую это здесь:

var role = roleConnection.Query<int>(Command, Model);

но я получаю эту ошибку:

Неявное преобразование из типа данных datetime в int не допускается. Используйте функцию CONVERT для выполнения этого запроса.

В чем проблема? Как я могу решить это?

1 Ответ

2 голосов
/ 27 октября 2019

Как прокомментировано: возможно, существует несоответствие между вашим списком значений и списком столбцов, что приводит к тому, что значение записывается в столбец, которому он не принадлежит.

Вы используете синтаксис вставки, который не перечисляет целевые столбцы:

insert into [User] output inserted.Id values(val1, val2, ...)

Это подвержено ошибкам, и его трудно отладить, когда что-то идет не так. Вместо этого вам следует перечислить столбцы в вашем запросе вставки:

insert into [User](col1, col2, ...) output inserted.Id values(val1, val2, ...)) 

Использование этого синтаксиса значительно упрощает проверку соответствия столбцов и значений.

...