10

我使用功能NHibernate在asp.net MVC3用C#功能NHibernate的映射SQL視圖

我在下面的方式工作,以產生和映射一類

映射

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' 

我想用這個觀點在我的代碼像我使用,但我怎麼能這樣做,我搜索了很多,但沒有發現谷歌上的任何東西

請幫助米Ë出來,在此先感謝

什麼是到目前爲止已經試過

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

回答

14

查看映射表映射以同樣的方式除了你應該把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 
} 
+0

但是我怎麼能得到計數(我的意思是我在Razor視圖或C#視圖的結果)? –

+0

看到我更新的問題,我試過我的應用程序運行良好,但我不知道如何獲得計數在C# –