2012-09-25 3 views
-1

문제는 없습니다. FluentNHibernate/NHibernate가 액세스 할 행을 아는 방법에 대해 궁금합니다. 이 일대 관계FluentNHibernate는 액세스 할 행을 어떻게 알 수 있습니까?

public class User 
{ 
    public virtual int Id { get; protected set; } 
    public virtual IList<Friend> Friends { get; set; } 
} 

public class Friend 
{ 
    public virtual int Id { get; protected set; } 
    public virtual User User { get; set; } 
    public virtual String FunnyProperty { get; set; } 
} 

: 다음 의사 코드에서

, 나는이 단체가

public class UserMap : ClassMap<User> 
{ 
    Id(x => x.Id); 
    // One user has many friends 
    HasMany(x => x.Friends).KeyColumn("UserId")... 
}  

public class FriendMap : ClassMap<Friend> 
{ 
    Id(x => x.Id); 
    References(x => x.User, "UserId")... 
} 

나는 양방향 관계를 구축하기 위해 다음 코드를 실행하면 : 다음

var user = new User().Friends.AddRange(/* 5 friends */); 
/* 5 friends */.ForEach(friend => friend.User = user); 

및 설정 :

,
user[2].FunnyProperty = "a magic string"; 

는 시각적 데이터베이스 탐색기 도구에서, 나는 사용자로 표를 참조 :


 
Id 
-------------------------------------- 
63 
-------------------------------------- 

테이블 친구 등 :


 
Id | UserId | FunnyProperty 
-------------------------------------- 
24 | 63 | (null) 
-------------------------------------- 
25 | 63 | (null) 
-------------------------------------- 
26 | 63 | a magic string 
-------------------------------------- 
27 | 63 | (null) 
-------------------------------------- 
28 | 63 | (null) 
-------------------------------------- 

어떻게 FluentNHibernate/자 NHibernate는 user.Friends에서 3 Friend 대상으로 ID 26 "기억"는 무엇입니까? 트랜잭션을 커밋하고 다른 트랜잭션을 다른 위치에서 시작한 다음 동일한 user.Friends[2]을 검색한다고 가정 해보십시오. FluentNHibernate/NHibernate는 id 26 행을 액세스하는 것을 어떻게 알고 있습니까? 당신이 아래처럼 대해 부동 다양한 사용자와 친구 테이블이있을 때

특히, 방법 FluentNHibernate/NHibernate에 액세스 할 행 "기억"않을 때 :


 
Id | UserId | FunnyProperty 
-------------------------------------- 
24 | 24 | (null) 
-------------------------------------- 
25 | 89 | (null) 
-------------------------------------- 
26 | 66 | a magic string 
-------------------------------------- 
27 | 12 | (null) 
-------------------------------------- 
28 | 66 | (null) 
-------------------------------------- 
28 | 89 | (null) 
-------------------------------------- 

답변

1

친구 테이블에 친구에 대한 참조 인 UserId 속성이 있습니다. 유창 NHibernatie 당신이 당신이 정의한 매핑을 읽습니다.

1

친구 테이블에도 색인 열이 있습니다.

관련 문제