Свободное отображение Nhibernate для представлений Sql

Я использую Fluent Nhibernate в asp.net mvc3 с С #

Я работаю следующим образом для создания и сопоставления класса

Сопоставление

using FluentNHibernate.Mapping;
using Com.Web.Domain;

   namespace Com.Web.Mapping
      {
         public class CompanyMap : ClassMap<Company>
        {
             public CompanyMap()
            {
               Id(x => x.id);
               Map(x => x.Name);
              }
          }
       }

Класс

     using System.Collections.Generic;
     using System;

      namespace Com.Web.Domain
      {

          public class Company
         {

          public virtual int id { get; set; }
          public virtual string Name{get;set}

           }

        }

и в файле конфигурации

  private static void InitializeSessionFactory()
    {

       _sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008
                          .ConnectionString(local)

            )
            .Mappings(m =>
                      m.FluentMappings
                          .AddFromAssemblyOf<Company>())
            .ExposeConfiguration(cfg => new SchemaExport(cfg)
            .Create(false, false))  // this is intentionally set false , bcz i dont want to regenerate table when application starts every time 
            .BuildSessionFactory();


    }

Теперь проблема, когда я создаю представление в sql, выглядит так

Просмотр SQL

CREATE VIEW [FeaturedCompanies] AS

   SELECT COUNT(Company.id) As Count FROM Company
   WHERE Name='Alias'

Я хочу использовать это представление в своем коде, как я использую, но как я могу это сделать, я много искал, но ничего не нашел в Google

Пожалуйста, помогите мне и заранее спасибо

что испробовано на данный момент

Класс

public class FeaturedCompany
{
    public virtual int id { get; set; }
    public virtual int name { get; set; }
    public virtual int count { get; set; }
}

Сопоставление

public class FeaturedCompanyMap : ClassMap<FeaturedCompany>
  {
 public FeaturedCompanyMap()
 {
    Table("FeaturedCompanies");
    ReadOnly();
   Id(x => x.id);
   Map(x => x.name);
   Map(x => x.count);
 }
}



Ответы (1)


Представления отображаются так же, как и таблицы, за исключением того, что вы должны поместить Readonly() в отображение, чтобы предотвратить случайную запись в него. Пример:

public class FeaturedCompanyMap : ClassMap<FeaturedCompany>
{
    public FeaturedCompanyMap ()
    {
       Table("FeaturedCompanies");
       ReadOnly();

       Id(x => x.Id);
       Map(x => x.Name);
       Map(x => x.Count);
    }
}

Обновление: чтобы получить счет

var results = session.Query<FeaturedCompany>().Where(filter).List();

foreach(var row in results.Select(r => "Alias: " + r.Name + "  Occurence: " + r.Count))
{
    // print row to screen
}
person Firo    schedule 05.10.2012
comment
но как я могу получить подсчеты (я имею в виду результат моего просмотра в режиме бритвы или C #)? - person smart boy; 05.10.2012
comment
см. мой обновленный вопрос, то, что я пробовал, мое приложение работает нормально, но я не знаю, как получить счет в С # - person smart boy; 05.10.2012
comment
Привет, @Martin, я пытаюсь использовать представление с nhibernate, я сделал отображение, как показано в следующем фрагменте кода. Но запрос к объекту ниже ничего не возвращает. [Class (NameType = typeof (LeadReviewDetail), Table = vw_lead_review_detail, Lazy = false, Schema = affiliate)] открытый класс LeadReviewDetail {[Id (Name = LeadEventId, Column = lead_event_id, UnsavedValue = 0)] [Generator ( назначено)] общедоступный виртуальный int? LeadEventId {получить; набор; } [Свойство (столбец = добавление_входное_значение)] общедоступная виртуальная строка AdditionInputValue {получить; набор; }} - person Dreamer; 11.06.2020