Fluent NHibernate - 将存储过程的结果映射到多个模型

问题描述:

我试图将存储过程的结果映射到包含多次模型的模型。我不确定这是否可行,但想问一下,看看这是否是一种有效的方法,或者如果单独定义所有内容会更好。Fluent NHibernate - 将存储过程的结果映射到多个模型

我的模型类是这样的:

public class ClientSummary { 
    public virtual int Id { get; set; } 
    public virtual int Client_ID { get; set; } 
    public virtual string Client_Name { get; set; } 
    public virtual string State { get; set; } 
    public virtual EDITotal Totals { get; set; } 
    public virtual EDITotal In_Totals { get; set; } 
    public virtual EDITotal Out_Totals { get; set; } 
    public virtual EDITotal Direct_Totals { get; set; } 
    public virtual EDITotal CPN_Totals { get; set; } 
} 
public class EDITotal { 
    public virtual int Count { get; set; } 
    public virtual double Charges { get; set; } 
    public virtual double StateSavings { get; set; } 
    public virtual double PPOSavings { get; set; } 
    public virtual float PPO_Pct_Bill { get; set; } 
    public virtual float PPO_Pct_State { get; set; } 
    public virtual int Unique_TaxIds { get; set; } 
} 

我不知道什么是我班的地图是什么样子的功能NHibernate,或者,如果这样的事情是可能的。我主要是为了保持整洁和可重用。我相信我会有其他报告会使用类似的指标。我是以正确的方式去做的,还是我真的需要为每个构建的报告定义一个完整的模型?这一切都发生在MVC Web应用程序中。

在此先感谢!

是的,这确实是可能的,对或错,你可以让你的工作方式,你有你的课程设置。要做到这一点,你可以用这样的映射:

public class ClientSummaryMappingOverride : IAutoMappingOverride<ClientSummary> 
{ 
    public void Override(AutoMapping<ClientSummary> mapping) 
    { 
     mapping.References(x => x.Totals, "Totals_id"); 
     mapping.References(x => x.In_Totals, "In_Totals_id"); 
     mapping.References(x => x.Out_Totals, "Out_Totals_id"); 
     mapping.References(x => x.Direct_Totals, "Direct_Totals_id"); 
     mapping.References(x => x.CPN_Totals, "CPN_Totals_id"); 
    } 
} 

一旦你配置你的地图,你只需要确保您的存储过程或SQL查询与适当的“Totals_id”类型的字段返回ClientSummary记录。 NHibernate会挑选这些ID并将它们映射到正确的数据(我相信懒惰加载,取决于您的约定或其他映射)。