Asp.net-Mvc
用於 Sql 視圖的 Fluent Nhibernate 映射
我在帶有 c# 的 asp.net mvc3 中使用 Fluent Nhibernate
我正在按照以下方式生成和映射一個類
映射
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); } }
視圖的映射方式與表的映射方式相同,只是您應該放入
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 }