По каким причинам NHibernate не будет выполнять SQL? - PullRequest
0 голосов
/ 07 декабря 2010

Я использую Fluent NHibernate для сопоставления сущностей и у меня возникла проблема с получением хранилища для выдачи набора результатов. В консоли SQL не отображается, а в других репозиториях. У меня есть ощущение, что это из-за сопоставлений, но я не могу сказать, почему. Название таблицы включает в себя подчеркивание, которое является одним из единственных различий между этим репо и другими. У меня вопрос, что может привести к тому, что 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");

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

Как я уже говорил, работают другие репозитории, которые используют другие объекты / картографии. Я могу использовать этот репозиторий, обмениваясь сущностью / отображением, которое он реализует, и он будет работать. Я почти уверен, что это из-за картографирования, но не могу сказать, какая часть. Я проверил имя таблицы и имена столбцов.

Спасибо за помощь

1 Ответ

0 голосов
/ 07 декабря 2010

Я предполагаю, что ваша таблица имеет первичный ключ. Если да, то не следует ли вам сопоставить этот первичный ключ

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