0

유창한 nhibernate와 1 대 1 관계를 어떻게 만듭니 까? 나는 MS SQL Server 2008을 사용하고 있으며 데이터베이스 다이어그램 뷰어를 통해 db 테이블을 볼 때마다 일대일 관계를 가져야하는 테이블에는 테이블이없는 것으로 보입니다.Fluent Nhibernate 및 HasOne() 문제

Users 
UserId <pk> Guid 


Settings 
UserId <pk> Guid 


public Settings 
{ 
    public virtual Guid UserId {get; private set;} 
public virtual Setting User { get; set; } 

} 

public User 
{ 
    public virtual Guid UserId {get; private set;} 
public virtual Setting Setting { get; set; } 
} 


public class UserMap : ClassMap<User> 
{ 
     Id(x => x.UserId); 
    HasOne(x => x.Setting); 
} 

public class SettingMap : ClassMap<Setting> 
{ 
     Id(x => x.UserId); 
    HasOne(x => x.User); 
} 

그래서 시도했지만 작동하지 않았습니다.

+0

효과가없는 것은 무엇입니까? 오류가 있었습니까? 생성 된 SQL을보기 위해 테이블을 생성 했습니까? ID 매핑 등을위한 규칙이 있습니까? – Phill

+0

@Phil 저는 ms SQL 2008 서버 다이어그램 생성기에서 일대일 관계를 보여주는 두 테이블 사이에 그려진 선을 볼 것으로 예상합니다. 테이블을 생성 할 때이 관계가 표시되지 않습니다. – chobo2

답변

0

왜 Setting 클래스에 Setting을 입력하는 속성이 있습니까? 그것은 User라고 불리우므로 User 클래스가 될 것으로 기대합니다 (문제에 대한 설명으로 인해).

0

나는 비슷한 문제가 있었지만 생성되는 관계를 볼 수 없었다. 나는 이것이 결국 효과가 있다는 것을 알게되었습니다 :

public class ParentMap : ClassMap<Parent> 
{ 
    public ParentMap() 
    { 
     Id(x => x.Id); 
    HasOne(s => s.Child).Cascade.All(); 
    } 
} 

public class ChildMap : ClassMap<Model.Child> 
{ 
    public ChildMap() 
    { 
    Id(x => x.Id); 
    HasOne(s => s.Parent).Constrained().ForeignKey();   
    } 
}