Fluent NHibernate - отображение результатов хранимой процедуры на несколько моделей - PullRequest
0 голосов
/ 15 февраля 2011

Я пытаюсь отобразить результаты хранимой процедуры в модель, которая содержит другую модель несколько раз.Я не уверен, возможно ли это, но хотел спросить и посмотреть, является ли это правильным подходом, или было бы лучше определить все индивидуально.

Мои классы моделей выглядят так:*

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; }
}

В чем я не уверен, так это в том, как будет выглядеть моя карта классов в Fluent NHibernate или возможно ли что-то подобное.Я в основном стараюсь держать вещи в чистоте и многоразового использования.Я уверен, что у меня будут другие отчеты, которые будут использовать аналогичные показатели.Правильно ли я поступаю по этому поводу, или мне действительно нужно определить полную модель для каждого создаваемого мной отчета?Все это происходит внутри веб-приложения MVC.

Заранее спасибо!

1 Ответ

0 голосов
/ 25 августа 2011

Да, это действительно возможно, правильно или неправильно, вы можете заставить его работать так, как вы настроили свои классы.Для этого вы можете использовать маппер, подобный следующему:

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-запрос возвращает записи ClientSummary с соответствующим «Totals_id»введите поля.NHibernate подберет эти идентификаторы и сопоставит их с правильными данными (я полагаю, что Lazy Load зависит от ваших соглашений или других сопоставлений).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...