오랜 질문에 사과드립니다. 그러나 모든 세부 사항을 알려주는 것이 중요하므로 끝까지 끝까지 견뎌주십시오.FluentNHibernate - 클래스를 여러 테이블에 매핑하기
저는 많은 권한이없는 레거시 데이터베이스를 사용하고 있습니다. 클래스를 여러 데이터베이스 테이블에 매핑 할 수 있어야합니다. 여기 내 테이블 당신이 볼 수 있듯이, 나는 모든 조회가 저장되는 조회 테이블을
Lookup
+--------+--------------+------------+
| Column | DataType | Attributes |
+--------+--------------+------------+
| Id | INT | PK |
| Code | NVARCHAR(50) | |
+--------+--------------+------------+
Culture
+--------------+--------------+------------+
| Column | DataType | Attributes |
+--------------+--------------+------------+
| Id | INT | PK |
| Culture_Code | NVARCHAR(10) | |
+--------------+--------------+------------+
Lookup_t9n
+----------------+---------------+---------------------+
| Column | DataType | Attributes |
+----------------+---------------+---------------------+
| Id | INT | PK |
| Culture_Id | INT | FK to Culture table |
| Localised_Text | NVARCHAR(MAX) | |
+----------------+---------------+---------------------+
보는 방법이다. 찾아보기의 표시 텍스트는 현지화되어 별도의 테이블에 저장됩니다. 이 테이블에는 현지화 된 텍스트가있는 문화권을 나타내는 외래 키 키가 있습니다.
내 클래스는이
public class Lookup {
public virtual int Id {get; set;}
public virtual string Code {get; set;}
public virtual string DisplayText {get; set;}
}
처럼 보인다 그리고 내 FNH 매핑 클래스는 Join
부분에 좀를 제공하려면, 위의 매핑이
public class LookupMappings : ClassMap<Lookup> {
public LookupMappings()
{
Table("Lookup");
Id(x => x.Id).Column("Id");
Map(x => x.Code).Column("Code");
Join("Lookup_t9n", join => {
join.Map(x => x.DisplayText).Column("Localised_Text"); //Note this place, my problem is here
})
}
}
처럼 보이는 where 절 WHERE Lookup_t9n.Culture_Id = Culture.Culture_Id AND Culture.Culture_Code = System.Threading.Thread.CurrentUICulture.CultureCode
있다.
나는 이것이 유효한 SQL이 아니라는 것을 알고 있지만 의도를 전달합니다. 그런 일을 한 경험이있는 사람이 있습니까?
데이터베이스 테이블과 일대일 매핑하는 클래스를 가질 수있는 매핑 계층을 추가 한 다음 일반 클래스를 작성하여 해당 클래스를 다시 Lookup
클래스에 매핑 할 수 있습니다. 나는 중간 솔루션으로 오히려 그것을 해왔다. 스마트 NH 사용으로 맵핑 레이어를 제거 할 수 있는지 궁금합니다.
나는 당신의 솔루션을 두 번이나 이미 돌아가려고 노력했습니다. 나는 당신이 제공 한 모든 링크를 통해 먼저 그것을 구현해야한다고 생각합니다. – Suhas
동의합니다. 내 쇠약은 당신이 원하는만큼 간단하지 않습니다. 그러나 그것은 결국 일하고 있습니다 ... –