J'ai une requête nHibernate en utilisant Criteria, et j'essaie de convertir une chaîne en booléen dans la requête elle-même. Je l'ai fait la même chose avec la coulée d'une chaîne à int, et qui fonctionne bien (la propriété « DataField » est « 1 » comme une chaîne):Chaîne de conversion en booléen à l'aide des critères nHibernate
var result = Session
.CreateCriteria<Car>()
.Add(Restrictions.Eq((Projections.Cast(NHibernateUtil.Int32,
Projections.Property("DataField"), 1))
.List<Car>();
tx.Commit();
Mais je suis en train de faire la même chose avec bool, mais Je ne reçois pas le résultat escompté:
var result = Session
.CreateCriteria<Car>()
.Add(Restrictions.Eq((Projections.Cast(NHibernateUtil.bool,
Projections.Property("DataField"), true))
.List<Car>();
tx.Commit();
« DataField » est la chaîne « True », mais le résultat dans une liste vide, où il doit contenir 100 éléments avec la chaîne de propriété « DataField » « True ". J'ai essayé avec la chaîne "vrai", et "1", mais le résultat est toujours une liste vide.
[EDIT]
Comme commenté ci-dessous, je pouvais vérifier la chaîne « Vrai » ou « Faux », mais je dirais que cela est une question plus générale que juste pour le booléenne. Notez que l'idée est d'avoir une sorte de représentation de valeur de clé des données, où la valeur peut être différents types de données. J'ai besoin de la table de valeurs pour contenir toutes les données, donc stocker les données sous forme de chaîne semble être la solution la plus propre!
J'ai été capable d'utiliser la méthode ci-dessus pour stocker int et double comme chaîne, et pour la distribution dans la requête, mais je n'ai pas réussi à utiliser la même méthode pour DateDime et Boolean.
Et pour DateTime il est crucial d'avoir l'objet DateTime réel.
Comment est-ce que je peux faire le moulage de chaîne en booléen, et la chaîne au travail de DateTime dans les requêtes?
Merci
Je ne comprends pas pourquoi ne pas simplement 'Restrictions.Eq (" DataField "," True ")' –
Vous avez raison. Pour le booléen je pourrais facilement aller pour la comparaison de chaîne, mais pour DateTime j'ai le même problème que bool, et là il est crucial de transformer la chaîne en un objet DateTime –
pourquoi avez-vous un champ datetime mappé comme chaîne? –