2009-12-15 6 views
0

match de la propriété d'une propriété que j'ai deux classes suivantes:Nhibernate DetachedCriteria: Trouver des entités où une valeur

public class User 
{ 
    public virtual Guid Id { get; set; } 
    public virtual UserCredentials Credentials { get; set; } 

    // other stuff 

    protected User() { } 
} 

public class UserCredentials 
{ 
    public virtual Guid Id { get; set; } 
    public virtual string UserName { get; set; } 

    // other stuff 

    protected UserCredentials() { } 
} 

Je veux créer un critère transients qui trouve tous les utilisateurs où Credentials.UserName = "someuser", mais je ne peux pas faire les choses .. Je l'ai essayé ce qui suit:

DetachedCriteria.For<User>().Add(Expression.Eq("Credentials.UserName", "someuser"); 

mais je reçois une exception disant

« ne pouvait pas r esolve propriété: Credentials.UserName de: DataLinkNord.Domain.User »

Toute aide serait appréciée ..

Répondre

3

J'ai rencontré ce problème avant moi (même si je suis un utilisateur Java), mais le chemin autour pour moi était d'utiliser les « AddAlias ​​() » appeler d'abord ... quelque chose comme:

DetachedCriteria.For<User>().AddAlias("Credentials", "Credentials").Add(Expression.Eq("Credentials.UserName", "someuser"); 
+0

merci Correcte, mais je pense que je dois revoir mes applications, parce que je suis invalide Expression SQL où il essaie de rejoindre la table utilisateur avec lui-même .. –

Questions connexes