Napotkano problem po uaktualnieniu do najnowszej wersji Dapper z Nuget (v 1.7).dapper nuget 1.7 przestawia mapowanie
Zawsze zwraca pierwszy element wyliczeniowy (to znaczy nie mapuje).
Używam MySQL jako bazy danych.
CREATE TABLE `users_roles` (
`userId` INT(11) NOT NULL,
`roleId` INT(11) NOT NULL,
KEY `user_id` (`userId`),
KEY `role_id` (`roleId`)
);
INSERT INTO `users_roles` (`userId`, `roleId`) VALUES (1, 1);
INSERT INTO `users_roles` (`userId`, `roleId`) VALUES (2, 2);
public enum Role {
Anonymous = 0, Authenticate = 1, Administrator = 2
}
var role = Current.Db.Query<Role>(@"SELECT roleId as Role FROM users_roles
WHERE [email protected]", new { id = 2 }).FirstOrDefault();
Daje oczekiwane wyjście w Dapper nuget v1.6. Czy to jest prawidłowe zachowanie dla nowej wersji (1.7)?
Aktualizacja:
Po wykonaniu niektórych badań z kilku aplikacji konsoli i świeżymi appications mvc3 Uważam, że zachowanie Dapper mapowania enum jest niespójne, kiedy mapa enum wpisz bezpośrednio.
Jednak mapowania enum jako właściwość klasy jakoś konsekwentnie powraca prawidłowa map
public class User
{
public int Id { get; set; }
public Role Role { get; set; }
}
var user = Current.Db.Query<User>(@"SELECT roleId as Role, userId as Id
FROM users_roles
WHERE [email protected]", new { id = 2 }).FirstOrDefault();
wynikiem user.Role jakoś zwraca oczekiwane wyjście
Wygląda błędu; zaloguj się na stronie projektu –
dziękuję, zaloguj już ... czekając na odpowiedź –
Zostało to poprawione * w kodzie * od 10 maja. Jednak nie wdrożyliśmy ponownie Nuget, AFAIK. –