2010-04-20 4 views
0

J'essaye d'accéder aux tables de base de données "MYSQL" pour créer une interface graphique pour ajouter des utilisateurs et des privilèges.NHibernate MySQL Enum

En faisant cela, j'ai rencontré mon premier problème NHibernate. Comment mapper MySQL Enum à un C# Booléen? Ou si ce n'est pas possible alors au moins un Enum?

Les champs de base de données sont delcared comme

enum('N', 'Y') 

Ce sont tous les champs de privilège dans la base de données.

Maintenant, y a-t-il moyen d'obtenir ceci enum ou encore mieux, booléen en C#/NHibernate?

Edit # 1: En C# si je dois déclarer ENUM ce sera le suivant:

enum YesNoEnum 
{ 
    Yes, 
    No 
} 
+0

Comment déclarez-vous votre C# enum? – wtaniguchi

+0

Je préférerais que ce soit un booléen, mais s'il vous plaît voir Modifier # 1: ci-dessus –

Répondre

2

Vous pouvez utiliser un bool en C# et la carte à un caractère dans MySQL en utilisant une implémentation IUserType personnalisée. This example est exactement ce que vous cherchez.

+0

Merci pour cela: D J'ai trouvé à partir de ce post que YesNoType est réellement intégré dans NHibernate (Au moins la version que j'utilise 2.x) –

0

Je ne sais pas utiliser l'ENUM de MySQL avec NHibernate, mais je sais que si vous voulez utiliser un champ booléen en C# et l'ont mis en correspondance avec une base de données MySQL, vous pouvez le faire:

MyDto.cs:

public bool IsAdmin {get;set;} 

Colonne définition i n la base de données:

`IsAdmin` TINYINT(1) NOT NULL DEFAULT 0 
+1

Cela ne fonctionnera pas, j'essaie d'accéder aux built-in dans les tables de privilèges MySQL. Donc je ne peux pas changer/créer une définition de schéma/colonne. –

+0

Ah je vois, désolé, ne peut pas vous aider alors :( – mmacaulay