2011-10-28 48 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(「從VotingResult選擇r.class 「似乎不起作用,但我可以使用一些令人討厭的技巧,但我需要能夠輕鬆地將參考文件變爲類型和標識 - 理想情況下使用Linq或AliasToBeanResultTransformer。

對於記錄,繼承映射域實體的子類是Table Per Class。使用LINQ

感謝

回答

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