Comment définir la valeur null à un GUID de la propriété
J'ai un objet de type Employé qui a un Guid de la propriété. Je sais que si je veux le mettre à null je dois définir mon type de propriété que nullable Nullable<Guid>
prop ou Guid? prop.
Mais dans mon cas, je ne suis pas en mesure de changer le type de l'hélice, de sorte qu'il reste comme type de Guid et mon collègue et moi, nous ne voulons pas utiliser le Guid.Vide.
Est-il un moyen de mettre ma propriété à la valeur null ou une chaîne.vide restablish le champ dans la base de données comme null.
J'ai un mécanisme de transformation de la chaîne.vide à null, mais je vais changer beaucoup de choses si les modifier pour accepter un vide guid null.
Toute aide, s'il vous plaît!
Guid
est un struct
, ceux qui ne peuvent pas être null. Vous devez utiliser le type nullable. Soit à l'aide de Guid?
ou Nullable<Guid>
. Il n'y a pas d'autre moyen.Quand je vois quelque chose comme "je sais que je devrais faire, mais je ne peux pas", arrêtez-vous là. Oui, vous pouvez et vous devriez. Pourquoi voulez-vous provoquer vous-même un monde de souffrance par le piratage des trucs?
OriginalL'auteur Maximus Decimus | 2013-12-10
Vous devez vous connecter pour publier un commentaire.
Pas. Parce que c'est pas les valeurs null. Si vous souhaitez accepter les valeurs null, vous devez utiliser
Nullable<Guid>
- si vous ne l'avez pas, il n'y aurait pas de raison d'en avoirNullable<T>
pour commencer. Vous avez un fondamentaux question ici - ce qui vous fait savoir, compte tenu de votre premier paragraphe. Vous avez dit, "je sais que si je veux réaliser Un, que je dois faire B - mais je veux réaliser Un sans le faire B." C'est impossible par définition.Le plus proche que vous pouvez obtenir est d'utiliser un spécifique GUID pour représenter une valeur null -
Guid.Empty
être le candidat évident, mais vous avez rejeté pour des raisons non précisées.Nullable<T>
pouvez envelopper d'une valeur de type dans un autre type de valeur que peut représenter une valeur null. Si vous deviez faireNullable<Guid>
ouGuid?
pour faire court, vous pouvez représenter la DB côté comme uneUNIQUEIDENTIFIER NULL
Non, vous avez mal compris
Nullable<T>
- c'est un type de valeur, mais il a une valeur représentant l'absence d'un enveloppé de valeur.Nullable<T>
serait beaucoup moins agréable si c'était vraiment un type de référence.Génial, je ne savais pas que. Je vais le démonter et regarder maintenant. Merci pour la leçon gratuite. 🙂 Sur une note de côté, pourquoi serait-il beaucoup moins agréable que d'un type de référence?
Parce qu'alors, vous devez créer une instance (sur le tas) pour chaque valeur, plutôt que de la valeur "inline" - qui conduirait à plus de GC pression.
OriginalL'auteur Jon Skeet
Elle pourrait l'être. Inutile de casting n'est pas requise.
Cela m'a aidé lorsque db renvoie un strring, le modèle prévoit Nullable GUID UserRoleID = String.IsNullOrEmpty(userrole.RoleId) ? (Guid?)null : nouveau Guid(userrole.RoleId); merci
Comment est-ce obtenir 18 upvotes lorsque la question stipule clairement que ce n'est pas une réponse valable? Était-ce fusionné à partir d'une autre question?
OriginalL'auteur A.S
Choisissez votre poison - si vous ne pouvez pas changer le type de la propriété à accepter les valeurs null, alors vous allez avoir à utiliser un "magie" de la valeur à représenter la valeur NULL.
Guid.Empty
semble aussi bon que tout à moins d'avoir une raison particulière pour ne pas vouloir l'utiliser. Un deuxième choix seraitGuid.Parse("ffffffff-ffff-ffff-ffff-ffffffffffff")
mais c'est beaucoup plus laid à mon humble avis.OriginalL'auteur D Stanley
Depuis "Guid" n'est pas nullable, utiliser "Guid.Vide" comme valeur par défaut.
OriginalL'auteur macrobbsen
Vous pouvez utiliser
typeof(Guid), "00000000-0000-0000-0000-000000000000"
pour la Valeur par défaut de la propriété.OriginalL'auteur Juke Exch
vous pouvez faire guid variable pour accepter la valeur null en utilisant d'abord ? l'opérateur que vous utilisez Guid.Vide ou transtypage à null à l'aide de (Guid?)null;
par exemple:
ou
OriginalL'auteur Ranjith
extrac Guid valeurs de fonctions de base de données:
OriginalL'auteur Ángel Ibáñez
Je pense que c'est la bonne manière:
Guid déposé = Guid.Vide;
OriginalL'auteur Ángel Ibáñez