2010-12-07 28 views
0

J'utilise Fluent NHibernate pour mapper des entités et j'ai un problème pour obtenir un référentiel pour donner un ensemble de résultats. Dans la console, le SQL ne s'affiche pas mais d'autres repositories le font. J'ai le sentiment que c'est à cause des Mappings mais je ne sais pas pourquoi. Le nom de la table inclut un trait de soulignement qui est l'une des seules différences entre ce repo et les autres. Ma question est ce qui pourrait causer l'exécution du sql?Quelles sont les raisons pour lesquelles NHibernate n'exécutera pas SQL?

Voici ma configuration.

Entité:

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

dépôt:

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

Comme je l'ai déjà dit, les autres dépôts qui utilisent d'autres entites/mapping fonctionnent. Je peux utiliser ce référentiel, en échangeant l'entité/mapping qu'il implémente et cela fonctionnera. Je suis assez sûr que c'est à cause du mappage mais je ne peux pas dire quelle partie. J'ai vérifié le nom de la table et les noms des colonnes.

Merci pour l'aide

+0

Si c'était à cause des correspondances, je pense que vous obtiendriez une erreur ... – dotjoe

+0

Y at-il SQL généré? –

+0

Le code SQL ne s'affiche jamais dans la console. Pour d'autres repos, il le fera, et si j'utilise une entité différente dans ce repo, il le fera. – Brandon

Répondre

0

Je fais une hypothèse ici que votre table a une clé primaire. Dans ce cas, si vous ne le mapper clé primaire

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

J'ai essayé de changer le à Id (x => x.ID); mais toujours pas de dés ... J'ai dû arrêter de travailler dessus pendant un jour ou deux mais je suis sur le point d'y revenir. Je vais mettre à jour avec des informations. Merci – Brandon

+0

Pouvez-vous poster la cartographie complète s'il vous plaît. – jvanrhyn