Критерии NHibernate Найти по идентификатору

У меня есть 2 сущности:

public class Authority : Entity
{
    [NotNull, NotEmpty]
    public virtual string Name { get; set; }

    [NotNull]
    public virtual AuthorityType Type { get; set; }

}

public class AuthorityType : Entity
{
    [NotNull, NotEmpty]
    public virtual string Name { get; set; }

    public virtual string Description { get; set; }
}

Теперь я хочу найти все полномочия из репозитория по типу. Я пытался сделать это так:

    public IList<Authority> GetAuthoritiesByType(int id)
    {
        ICriteria criteria = Session.CreateCriteria(typeof (Authority));
        criteria.Add(Restrictions.Eq("Type.Id", id));
        IList<Authority> authorities = criteria.List<Authority>();
        return authorities;            
    }

Однако я получаю сообщение об ошибке, что что-то не так с SQL ("не удалось выполнить запрос". Внутреннее исключение следующее: {"Недопустимое имя столбца "TypeFk".\r\nНедопустимое имя столбца "TypeFk"."}

Любой совет ? Любой другой подход?

С наилучшими пожеланиями, Эндрю


person user315648    schedule 30.04.2010    source источник


Ответы (1)


Похоже, что ваш файл сопоставления для сущности "Власть" связывает свойство Type со столбцом с именем TypeFk в любой таблице, с которой сопоставлена ​​сущность "Власть". По какой-то причине этой колонки нет.

Также может быть полезно просмотреть ваши файлы сопоставления.

person Chris    schedule 30.04.2010
comment
Спасибо за указание на правильное направление. Я использую Fluent и неправильно сопоставил ForeignKeyConvention. - person user315648; 30.04.2010
comment
Рад слышать это. Может быть, вы можете помочь брату, проголосовать и отметить ответ? Знаешь, это производит впечатление на женщин... и мне нужна вся помощь, которую я могу получить. :П - person Chris; 30.04.2010
comment
Ха-ха, вот очко, которое поможет вам набрать очки со всеми хитрыми девчонками, которые получают удовольствие от большой репутации парня. - person Berryl; 30.04.2010