2011-02-15 103 views
0

我試圖將存儲過程的結果映射到包含多次模型的模型。我不確定這是否可行,但想問一下,看看這是否是一種有效的方法,或者如果單獨定義所有內容會更好。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應用程序中。

在此先感謝!

回答

0

是的,這確實是可能的,對或錯,你可以讓你的工作方式,你有你的課程設置。要做到這一點,你可以用這樣的映射:

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並將它們映射到正確的數據(我相信懶惰加載,取決於您的約定或其他映射)。

相關問題