10

tôi đang sử dụng thành thạo NHibernate trong asp.net MVC3 với C#thạo Nhibernate Mapping cho Sql Xem

tôi đang làm việc ở sau cách để tạo ra và bản đồ một lớp

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

Class

 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} 

      } 

     } 

và trong tập tin cấu hình

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


    } 

bây giờ vấn đề đến tôi tạo ra một cái nhìn trong sql trông như thế này

Sql Xem

CREATE VIEW [FeaturedCompanies] AS 

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

tôi muốn sử dụng quan điểm này trong mã của tôi như giống như tôi đang sử dụng nhưng làm thế nào tôi có thể làm điều đó, tôi đã tìm kiếm rất nhiều nhưng không tìm thấy gì trên google

Xin giúp đỡ m e ra và cảm ơn trước

gì đang cố gắng cho đến nay

Lớp

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

Trả lời

14

xem được ánh xạ theo cùng một cách bảng được ánh xạ ngoại trừ việc bạn nên đặt Readonly() trong việc lập bản đồ để tránh vô tình ghi vào nó. Ví dụ:

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

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

Cập nhật: để có được đếm

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

nhưng làm thế nào tôi có thể nhận sẽ đếm (i có nghĩa là kết quả của quan điểm của tôi theo quan điểm dao cạo hoặc C#)? –

+0

xem câu hỏi cập nhật của tôi, những gì tôi đã cố gắng ứng dụng của tôi chạy tốt nhưng tôi không biết làm thế nào để có được đếm trong C# –

Các vấn đề liên quan