2009-01-02 8 views
0

C'est ma classe:La requête NHibernate2 est câblée lors de l'extraction de la collection à partir du proxy. Est-ce que c'est un comportement correct?

public class User 
{ 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 

    public virtual IList<UserFriend> Friends { get; protected set; }   
} 

public class UserFriend 
{ 
    public virtual int Id { get; set; } 
    public virtual User User { get; set; } 
    public virtual User Friend { get; set; } 
} 

Ceci est ma cartographie (Courant NHibernate):

public class UserMap : ClassMap<User> 
{ 
    public UserMap() 
    { 
    Id(x => x.Id, "UserId").GeneratedBy.Identity();     
    HasMany<UserFriend>(x => x.Friends);     
    } 
} 

public class UserFriendMap : ClassMap<UserFriend> 
{ 
    public UserFriendMap() 
    { 
     Id(x => x.Id, "UserFriendId").GeneratedBy.Identity(); 

     References<User>(x => x.User).TheColumnNameIs("UserId").CanNotBeNull(); 
     References<User>(x => x.Friend).TheColumnNameIs("FriendId").CanNotBeNull(); 
    } 
} 

Le problème est quand j'exécute ce code:

User user = repository.Load(1); 
User friend = repository.Load(2); 

UserFriend userFriend = new UserFriend(); 
userFriend.User = user; 
userFriend.Friend = friend; 

friendRepository.Save(userFriend); 

var friends = user.Friends; 

A la dernière ligne , NHibernate générer cette requête pour moi:

SELECT 
    friends0_.UserId as UserId1_, 
    friends0_.UserFriendId as UserFrie1_1_, 
    friends0_.UserFriendId as UserFrie1_6_0_, 
    friends0_.FriendId as FriendId6_0_, 
    friends0_.UserId as UserId6_0_ 
    FROM "UserFriend" friends0_ WHERE [email protected]; @p0 = '1'

QUESTION: Pourquoi la requête semble-t-elle très câblée? Il devrait sélectionner seulement 3 champs (qui sont UserFriendId, UserId, FriendId) Ai-je raison? ou il se passe quelque chose à l'intérieur de NHibernate?

Répondre

0

Vous devriez jeter un oeil à la cartographie générée par fluent-nhibernate, peut-être que cela a généré quelque chose de bizarre.