10

Używam Fluent NHibernate w asp.net mvc3 zC#Fluent NHibernate mapowania SQL Widoki

pracuję w następujący sposób, aby generować i zmapować klasa

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

Klasa

 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} 

      } 

     } 

aw pliku konfiguracyjnym

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


    } 

teraz problemem przyjść i utworzyć widok w sql wygląda tak

SQL Zobacz

CREATE VIEW [FeaturedCompanies] AS 

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

chcę używać tego widoku w moim kodu jako jak ja używam, ale jak mogę to zrobić, szukałem dużo, ale nie znalazłem nic na google

Zarzuty pomoc m e zewnątrz i z góry dzięki

co próbowałem dotąd

Klasa

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

Mapowanie

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

Odpowiedz

14

Widoki są odwzorowywane w ten sam sposób tabele są mapowane z wyjątkiem tego, że powinieneś umieścić Readonly() w mapowaniu, aby zapobiec przypadkowemu zapisaniu do niego. Przykład:

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

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

Aktualizacja: aby uzyskać liczbę

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

ale w jaki sposób mogę uzyskać liczniki (to znaczy wynik moim zdaniem w świetle brzytwa lub C#)? –

+0

zobacz moje zaktualizowane pytanie, co próbowałem mojej aplikacji działa dobrze, ale nie wiem, jak uzyskać liczenia w C# –

Powiązane problemy