2010-01-20 4 views
0

기존 데이터베이스에 다음 테이블 집합이 있습니다.NHibernate 매핑 문제

자원 - RESOURCEID

LocalisedResource - LocalisedResourceID, ResourceID를, 언어, 문화, LocalisedTerm

사무실 - OfficeId, NameResourceId

가 지금은 특정 사무실에 대한 쿼리 및 사무실의 이름을 다시 얻을 완 지정된 언어 및 문화에 대한 항목이없는 경우 "EN"의 기본 언어 및 "GB"의 문화로 다시 떨어지는 특정 언어 문화 조합 그래서

,이 같은 ... 순간

public class Office 
{ 
    public virtual int OfficeId { get; set; } 
    public string Name { get; set; }   
} 

repository.GetOffice(5 /* id */,"zh" /* language */,"cht" /* culture */); 
우리는 또한 너무 절약을 위해 그것을 할

...

repository.SaveOffice(office,"zh" /* language */,"cht" /* culture */); 

우리는 우리의 매핑을 모두하고있다 올바른 이름을 추출하는 함수를 사용하여 사용자 정의 작성된 저장 프로 시저 집합. 이것은 우리의 모든 핵심 코드에 대해 많은 SP를 작성해야하기 때문에 분명히 속도가 느려집니다.

답변

1

이 문서의 localizing NHibernate using filters은 개체를 검색하는 데 도움이 될 수 있지만 절약에 도움이되는지는 잘 모르겠습니다.

추가 편집 : Office의 컬렉션으로 지역화 된 이름을 매핑하고 OFfice의 메서드를 사용하여 컬렉션의 지역화 된 이름을 조회 할 수 있습니다. 응용 프로그램에서 Office 개체를 사용하는 방법에 따라 성능이 만족 스러울 수 있습니다.

+0

훌륭해, 다음에 어디로 가야할지를 알 수 있습니다. 나는 아무에게도 그 구원을 해결할 수 있는지 알기 위해 아직 답변을하지 않겠지 만, 며칠 내에 최선의 답변으로 표시 할 것입니다. –