Замок ActiveRecord и HQL - проблема с извлечением данных из таблицы - PullRequest
1 голос
/ 12 марта 2011

Я использую Castle ActiveRecord для своего проекта на C #, и у меня странная ошибка. Я хочу получить данные из одного указанного столбца с помощью методов ActiveRecord, чтобы я мог поместить их в comboBox.

Я использую этот метод с простым запросом:

...
using Castle.ActiveRecord.Queries;
...
public static Lable[] ReturnAllLableNames()
    {
        SimpleQuery<Lable> q = new SimpleQuery<Lable>(typeof(Lable), @"
        Select LableName
        from Lable 
        ");
        return q.Execute();
    }

где Lable - это таблица, а также класс в моем проекте, в котором есть столбцы LableID и LableName.

В первый раз, когда я собрал и попытался запустить свой проект, VS попросил меня указать файл ActiveRecordBaseQuery.cs, которого, конечно, у меня не было, поэтому я нажал «Отмена» и перестроил свой проект. В следующий раз у меня была следующая ошибка:

Could not perform ExecuteQuery for Lable

подробности об ошибке

мой класс

У меня нет подсказок, где я должен искать свою ошибку, потому что я использовал этот код из примеров SimpleQuery и добавил все необходимые ссылки в свой класс.

Если подумать, есть ли другой способ получить один указанный столбец, используя методы Castle AR?

Я был бы рад услышать любые подсказки относительно моей проблемы.

1 Ответ

2 голосов
/ 13 марта 2011

HQL NHibernate, в отличие от SQL, учитывает регистр для свойств и имен классов .В вашем случае это свойство называется labelName, а не LabelName, как указано в запросе.Я рекомендую изменить имя свойства на LabelName (см. .net, рекомендации по проектированию ).

Также, если вы используете C # 3.0+, вы можете использовать auto-реализованные свойства .

Также в IIRC вам необходимо использовать в запросе полностью определенные свойства, например, select l.LabelName from Label l

Наконец, если вы хотите вернуть список строк (LabelName s), вам нужно изменить сигнатуру метода, а также использовать SimpleQuery<string> вместо SimpleQuery<Label>.См. SimpleQuery документы для справки.

...