2011-10-28 4 views
0

주어진 클래스 :NHibernate의 <Any> 매핑에서 타입에 대한 투영?

public class VotingResult : DomainEntity 
{ 
    public const string DefaultTag = "overall"; 

    public VotingResult() 
    { 
     Dimension = DefaultTag; 
    } 

    public virtual DomainEntity Item { get; set; } 

    public virtual String Dimension { get; set; } 

    public virtual double Value { get; set; } 

    public virtual int VoteCount { get; set; } 

    public virtual DateTime DateCreated {get; set;} 

    } 

그리고 매핑

public sealed class VotingResultMap : ClassMap<VotingResult> 
{ 
    private VotingResultMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Option); 
     Map(x => x.Dimension); 
     Map(x => x.DateCreated); 
     Map(x => x.Value); 
     Map(x => x.VoteCount); 
     ReferencesAny(x => x.Item).AddMetaValues(); // extension method to add discriminators 
    } 
} 

VotingResult.Item.GetType(), Linq 또는 HQL을 통해 투영 할 수있는 방법이 있습니까 ("Select r.class VotingResult" 내가 사용할 수있는 몇 가지 불쾌한 속임수가 있지만 형식 및 ID - Linq 또는 AliasToBeanResultTransformer를 사용하여 쉽게 참조를 병합 할 수 있어야합니다 .

레코드의 경우 DomainEntity에 대한 상속 매핑 하위 클래스는 클래스 당 표입니다.

감사

답변

0

당신이로드

var results = Session.Query<VotingResult>() 
    .Where(...) 
    .Include(result => result.Item) 
    .AsEnumerable() 
    .Select(result => new 
    { 
     ItemType = result.Item.GetType().Name, 
     ItemId = result.Item.Id 
    }); 
+0

감사 후 투사 할 수 있습니다! 이것을보고 다시보고 할 것입니다. – JBland