10

sto utilizzando Fluent NHibernate in asp.net MVC3 con C#Fluent NHibernate mappatura per viste SQL

sto lavorando in modo seguente per generare e mappare una classe

Mapping

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

Classe

 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} 

      } 

     } 

e nel file di configurazione

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(); 


    } 

ora problema venire creo una vista in SQL assomiglia a questo

Sql View

CREATE VIEW [FeaturedCompanies] AS 

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

voglio usare questo punto di vista nel mio codice come una come io sto usando, ma come posso farlo, ho cercato un sacco, ma non trovai nulla su google

Motivi aiuto m e fuori e grazie in anticipo

ciò che è provato finora

Classe

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

Mapping

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

risposta

14

Visualizzazioni vengono mappati allo stesso modo le tabelle sono mappati tranne che dovresti inserire Readonly() nella mappatura per evitare di scrivere accidentalmente ad essa. Esempio:

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

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

Update: per ottenere i conteggi

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 
} 
+0

ma come si posso ottenere i conteggi (mi riferisco al risultato del mio punto di vista in vista rasoio o C#)? –

+0

vedere la mia domanda aggiornato, quello che ho provato la mia applicazione funziona bene, ma non so come ottenere i conteggi in C# –

Problemi correlati