2009-09-17 4 views
0

Je suis à la recherche d'un point dans la bonne direction pour résoudre ce problème.définir la colonne int dans DB à null

On me passe un objet de l'interface utilisateur.

L'une des valeurs est pour une clé étrangère (un entier qui autorise les valeurs nulles). La valeur envoyée est -1, ce qui signifie que la valeur n'a pas été définie par l'utilisateur.

Comment puis-je écrire cet objet dans le db définissant la clé étrangère à une valeur nulle. J'utilise NHibernate avec fluence pour la cartographie.

Aussi, est-ce une bonne pratique? Ou suis-je mieux de définir une valeur par défaut pour se rabattre sur.

Toute aide très appréciée.

+0

Pouvoir voir votre fichier de carte pourrait être utile. – ddc0660

+1

Pourquoi utilisez-vous un "int" avec -1 affecté au lieu d'un "int?" Nullable avec null attribué? –

Répondre

2

pseudocode:

class Entity { 
    public int Id {get; private set;} 
    public int? NullableValue {get;set;} 
} 
... 
if (valueReceived == -1) 
    entity.NullableValue = null; 
... 
session.Update(entity); 
-2

Je suppose que la première chose à vérifier est la valeur par défaut de -1 donnée à cette colonne dans la base de données.

Malheureusement, je ne sais pas assez sur NHibernate sur ce qu'il faut rechercher.

1

Sans voir le fichier carte pour être plus précis, je voudrais tout d'abord vous suggère d'ajouter le champ Nullable() à votre référence cartographiée:

// nullable 
Reference(x => x.ReferencedEntity).Nullable(); 

Je crois faites en sorte que votre objet commun utilise un type Nullable:

public virtual int? ForeignKeyFieldId { get; set; } 

Enfin, je convertirais votre -1 en n dès que l'interface utilisateur remet votre objet. Il ne sert à rien qu'une entité se déplace avec des données trompeuses si cela peut être évité. Après cela, les simples mises à jour devraient fonctionner correctement.

+0

Merci. Ce sera une connaissance pratique que j'ai l'intention d'utiliser couramment plus. A cette occasion, j'ai décidé d'assigner une clé par défaut. – user17510

Questions connexes