2010-12-07 9 views
0

Ich verwende Fluent NHibernate, um Entitäten zuzuordnen, und habe ein Problem, wenn ein Repository eine Ergebnismenge erhalten soll. In der Konsole wird SQL nicht angezeigt, aber andere Repositories tun dies. Ich habe das Gefühl, dass es an den Mappings liegt, aber ich kann nicht sagen warum. Der Tabellenname enthält einen Unterstrich, der einer der einzigen Unterschiede zwischen diesem Repo und anderen ist. Meine Frage ist, was könnte dazu führen, dass die SQL nicht ausgeführt wird?Aus welchen Gründen wird NHibernate SQL nicht ausführen?

Hier ist mein Setup.

Entity:

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

Mapping:

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

Repository:

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

Wie ich schon sagte, die anderen Repositories, die andere entities/mapping verwenden. Ich kann dieses Repository verwenden und die von ihm implementierte Entität/Zuordnung austauschen, und es wird funktionieren. Ich bin mir ziemlich sicher, dass es wegen der Zuordnung ist, aber nicht sagen kann, welcher Teil. Ich habe den Tabellennamen und die Spaltennamen überprüft.

Danke für die Hilfe

+0

Wenn es wegen der Abbildungen war ich denke, erhalten Sie einen Fehler würde ... – dotjoe

+0

Gibt es eine generierten SQL? –

+0

Das SQL wird nie in der Konsole angezeigt. Für andere Repos wird es, und wenn ich eine andere Entität in diesem Repo verwende, wird es. – Brandon

Antwort

0

Ich mache eine Annahme hier, dass Ihre Tabelle einen Primärschlüssel verfügt. Wenn ja, sollten Sie Karte nicht, dass die Primärschlüssel

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"); 
+0

Ich habe versucht, die Id zu ändern (x => x.ID); aber immer noch keine Würfel ... Ich musste für ein oder zwei Tage aufhören, daran zu arbeiten, aber ich bin schon wieder dabei. Ich werde mit irgendwelchen Informationen aktualisieren. Danke – Brandon

+0

Können Sie bitte das komplette Mapping posten. – jvanrhyn