2010-12-07 65 views
0

我正在使用流利NHibernate映射實體,並有問題獲取存儲庫以提供結果集。在控制檯中,SQL不會顯示,但其他存儲庫會這樣做。我有一種感覺,這是因爲映射,但不能說明原因。表名包含一個下劃線,這是該回購與其他回購之間唯一區別之一。我的問題是什麼可能導致sql不被執行?NHibernate不會執行SQL的原因是什麼?

這是我的設置。

實體:

public class Org 
    { 
     public virtual int ID { get; set; } 
     public virtual string IndividualName { get; set; } 
     public virtual string GroupName { get; set; } 
     public virtual string AddressLine1 { get; set; } 
     public virtual string AddressLine2 { get; set; } 
    } 

映射:

public class OrgMap : ClassMap<Org> 
{ 
    public OrgMap() 
    { 
     Table(@"Org_Updates"); // Also tried Table("Org_Updates"); 
     Map(x => x.ID); 
     Map(x => x.IndividualName); 
     Map(x => x.GroupName); 
     Map(x => x.AddressLine1, "PhysicalLocationAddress"); 
     Map(x => x.AddressLine2, "PLAddr2"); 

存儲庫:

public class OrgRepository : RepositoryBase<Org>, IOrgRepository 
    { 
     public IList<Org>GetTop50() 
     { 
      var query = All().AsList(); 
      return query; 
     } 
    } 

RepositoryBase:

public class OrgRepositoryBase<T> : RepositoryBase<T> where T : class 
    { 
     public OrgRepositoryBase() 
     { 
      var registry = ServiceLocator.Current.GetInstance<EventListenerRegistry>(); 
      registry.RegisterListenerForType<T>(GetType(), EventType.Save); 
      registry.RegisterListenerForType<T>(GetType(), EventType.Delete); 
     } 

     protected override ISession GetSession() 
     { 
      return UnitOfWork.Current.GetSessionFromContext<ISession>(typeof (OrgModel)); 
     } 

     protected override Type ModelType 
     { 

      get { return typeof (OrgModel); } 
     } 
    } 
} 

正如我之前所說,使用其他entites/mapping工作的其他存儲庫。我可以使用這個存儲庫,交換它實現的實體/映射,它將工作。我很確定這是因爲hte映射,但不能分辨哪個部分。我檢查了表名和列名。

感謝您的幫助

+0

如果是因爲我想你會得到一個錯誤的映射...... – dotjoe 2010-12-07 17:36:05

+0

是否有任何生成的SQL? – 2010-12-08 05:53:49

回答

0

我在這裏做一個假設,即你的表確實有一個主鍵。如果是這樣,你應該不映射該主鍵

public class OrgMap : ClassMap<Org> 
{ 
    public OrgMap() 
    { 
     Table(@"Org_Updates"); 
     Id(x => x.ID); 
     Map(x => x.IndividualName); 
     Map(x => x.GroupName); 
     Map(x => x.AddressLine1, "PhysicalLocationAddress"); 
     Map(x => x.AddressLine2, "PLAddr2");