J'ai rencontré un problème après mise à niveau vers la dernière version de Dapper à partir de Nuget (v 1.7).
Il retourne toujours la première enums membre (qui est, il ne parviennent pas à cartes).
Je suis en utilisant MySQL comme base de données.
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 userId=@id", new { id = 2 }).FirstOrDefault();
Il donne les résultats escomptés dans Dapper nuget v1.6. Est-ce le bon comportement de la nouvelle version (1.7)?
Mise à jour:
Après avoir fait quelques tests avec un peu d'application console et frais mvc3 applications, j'ai trouvé que le comportement de Dapper enum cartographie est incompatible lorsque vous mappez le type enum directement.
Toutefois, la cartographie d'un enum comme une propriété d'une classe, d'une certaine manière systématiquement renvoie la carte correcte
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 userId=@id", new { id = 2 }).FirstOrDefault();
le résultat de l'utilisateur.Rôle en quelque sorte renvoie le résultat attendu