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并将它们映射到正确的数据(我相信懒惰加载,取决于您的约定或其他映射)。