2011-01-25 6 views
1

다음 데이터 모델 및 도메인 개체에 대해 적절한 FluentNHibernate 매핑 구문을 알아 내는데 약간의 문제가 있습니다. 저는 여기에 일하고 있어요 데이터 모델입니다 : enter image description hereFluentNHibernate 매핑 구문 도움 필요

는 그리고 그 모델에 다음과 같은 도메인 객체를 매핑하기 위해 노력하고있어 : 일반적으로

namespace FluentNHibernateSandbox.Entities 
{ 
    public abstract class EntityBase 
    { 
     public virtual long Id { get; set; } 
    } 
} 

namespace FluentNHibernateSandbox.Entities 
{ 
    public class Attribute : EntityBase 
    { 
     public virtual string Name { get; set; } 
     public virtual string Label { get; set; } 
     public virtual string Description { get; set; } 
     public virtual int SortOrder { get; set; } 
     public virtual Group Group { get; set; } 
     public virtual Editor Editor { get; set; } 
    } 
} 

namespace FluentNHibernateSandbox.Entities 
{ 
    public class Group : EntityBase 
    { 
     public virtual string Name { get; set; } 
     public virtual string Label { get; set; } 
     public virtual string Description { get; set; } 
     public virtual int SortOrder { get; set; } 
     public virtual IList<Attribute> Attributes { get; set; } 
    } 
} 

namespace FluentNHibernateSandbox.Entities 
{ 
    public class Editor : EntityBase 
    { 
     public virtual string ViewName { get; set; } 
     public virtual string WorkerClassName { get; set; } 
    } 
} 

, 내가 궁극적으로는 아닌 것 같아 원하는 모든 것을하기가 어렵지 만, 내가 생각할 수있는 매핑의 모든 조합을 시도한 후에도 여전히 올바르게 할 수는 없습니다. 그 속성이 속한 그룹에 대한 참조와 그것에 할당 된 편집기에 대한 참조를 가지기 만하면 각 그룹은 그 속성의 일부를 가져야합니다. 여러 -> 여러 조인 테이블은 내게 맞는 것 같습니다. 특히 APPLICATION_ATTRIBUTE 테이블 궁극적으로 필자는 응용 프로그램과 관련된 속성 (이 경우 APPLICATION_ID가 4 인 속성) 만 원합니다.

모든 도움을 주시면 감사하겠습니다. 감사.

답변

2

아무래도 으로 응답 한 사람은 거의 없습니다. 어쨌든. 필자가 생각해 보려고했던이 매핑 상황에 대한 해답/솔루션은 실제로 가장 좋은 방법으로 밝혀졌지만 데이터베이스에 모든 사용자 정의보기를 생성하는 것이 었습니다. 필요한 응용 프로그램 별 데이터를 가져온 다음 응용 프로그램의 도메인 개체를 해당보기에 매핑했습니다. 이것은 적어도 부분적으로는이 테이블에서 필요한 정보가이 응용 프로그램에 대해 읽기 전용이 될 것이기 때문에 작동하지만 테이블에 쓸 필요가 있다고하더라도 꽤 확신 할 수 있습니다 (비록 내가 ' 이 경우 필자는 필자의 견해를 쓰기 가능하도록 설정할 수 있었고 그렇게하면 효과가 있었을 것이다).

Hat tip to @robconery.

+0

값어치있는 LOL입니다. 효과가있는 일에 도움이됩니다. 중요한 일입니다. –