2010-01-14 3 views
0

J'ai une classe comme ceci:Comment puis-je obtenir Fluent NHibernate pour sauver « null » à la DB pour les variables non initialisées

public class test 
{ 
    public virtual int Id { get; private set; } 
    public virtual char testType { get; set; } 
    public virtual char testType2 { get; set; } 
} 

Quand je crée, mais ne specificy testType2, je veux la valeur être "nul" dans la base de données. Au lieu de cela, la valeur est un char vide. Un moyen que j'ai trouvé pour forcer cela à être nul est d'utiliser char? pour le type. Cependant, cela ne fonctionne apparemment pas pour les chaînes (ne compile pas), et je ne veux vraiment pas jouer avec des types nullables. Existe-t-il un moyen d'obtenir un nhibernate fluide pour toujours sauvegarder les variables non initialisées comme "nulles"?

Modifier: Les variables de chaîne non initialisée sont enregistrées en tant que "null" dans la db. J'ai encore besoin d'une solution pour char et int.

+0

chaîne est déjà annulable, c'est pourquoi il ne compilera pas. – herzmeister

+0

Oui, je me suis rendu compte qu'après avoir écrit la question. –

Répondre

0
public class test 
{ 
    public virtual int? Id { get; private set; } 
    public virtual DateTime? SomeDate { get; private set; } 
    public virtual char? testType { get; set; } 
    public virtual char? testType2 { get; set; } 
} 

Tout ce que vous devez faire est d'ajouter un? après le type.

+0

J'espérais une solution sans utiliser de types NULL (c'est ce que fait?). –

+0

Le problème est que si votre C# ne supporte pas null vous avez des problèmes de toute façon. Je suppose qu'il est possible de résoudre avec un auditeur d'événement, mais cela semble beaucoup de travail pour une si petite chose. – mhenrixon

+0

Eh bien, la vraie réponse est qu'il n'y a aucun moyen de le faire. Cela a à voir avec le fait que les variables telles que char sont toujours initialisées, donc ne peuvent jamais être nulles à moins qu'elles soient explicitement nulles (avec?). Donc, je vais marquer votre réponse comme correcte de toute façon. –

Questions connexes