2011-03-17 5 views
1

조건이 필요한 HasMany 매핑이 있습니다. 이 부분적으로 작동하지만, 내가하고있는 것보다 나은 방법이 있어야합니다. 내가 사용하고있는 조건은 내가 가입하고있는 다른 테이블의 속성을 봐야합니다. 완전히 이름을 한정하려고하기 때문에 절, "metadatade1_"을 참조하는 경우, 위의 코드에서Fluent NHibernate - 조건이있는 HasMany 매핑

HasMany<MetaData>(x => x.MetaData).Table("MetaData") 
     .KeyColumn("DefinitionID") 
     .KeyColumn("TableID") 
     .Where("metadatade1_.SourceTable = 'Providers'") 
     .Cascade.SaveUpdate(); 

, 그것은 NH가 생성되는 이름입니다 : 내가 지금까지 가지고하는 것입니다. "MetaDataDefinitions.SourceTable"(MetaDataDef ... 실제 테이블 이름) 및 "SourceTable"자체를 사용하여 시도했지만, 이들 중 아무 것도 작동하지 않습니다.

조건에 이름을 정규화하고 "SourceTable = 'Providers'를 전달하지 않는 방법이 있습니까? 아니면 수동으로 연결하지 않고 생성 된 이름을 참조 할 수있는 방법이 있습니까? 거기에?

답변

3

간단히 말해서, 아니요. Where 메서드 (각각 HBM.XML의 where= 특성)는 원시 SQL 만 허용하므로 사용자가보고있는 문제가 발생하기 쉽습니다.

최상의 옵션은 컬렉션을 사용하지 않고 대신 쿼리를 사용하여 메타 데이터 인스턴스를 검색하는 것입니다.

+0

정확히 내가 원하던 것은 아니지만 대답에 감사드립니다! 귀하의 조언을 듣고이 데이터를 검색하기위한 쿼리를 작성하겠습니다. – Brosto

관련 문제