2015-04-21 2 views
3

У меня есть следующие компании с атрибутом ниже (за исключением Id):NHibernate метание «не может разрешить свойство» исключение

public virtual Category Category { get; set; } 

Это отображается в CompanyMap так:

HasOne(x => x.Category) 
      .Cascade.All(); 

Категория имеет только атрибут:

public virtual string Name { get; set; } 

в CategoryMap:

Map(x => x.Name) 
      .Column("Name") 
      .Length(40) 
      .Unique(); 

Таблица успешно создана в БД.

У меня есть хранилище с помощью следующей queryover:

  var test = Session.QueryOver<Company>() 
           .WhereRestrictionOn(dbCompany => dbCompany.Category.Name) 
           .IsLike(category.Name); 

category.name просто любая строка.

Тогда я хочу, чтобы получить доступ к БД и получить результаты с:

var result = test.List(); 

я получаю следующее исключение:

could not resolve property: Category.Name of: My.Name.Space.Company 

Что случилось с запросом через?

ответ

6

Вам не хватает ни одного сообщения Category.

Попробуйте это:

Category catAlias = null; 

var test = Session.QueryOver<Company>() 
    .Left.JoinAlias(x => x.Category,() => catAlias) // Left is optional 
    .WhereRestrictionOn(() => catAlias.Name) 
    .IsLike(category.Name);