Дозвуковой запрос псевдонима - как?

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

`new Select("GTekst = ArrGruppe.Tekst", "GLTekst = ArrGruppeLinie.Tekst")
.From(ArrGruppeLinie.Schema)
.InnerJoin(ArrGruppe.IdColumn, ArrGruppeLinie.ArrGruppeIDColumn)
.Where(ArrDeltager.Columns.Kategori).IsLessThan(20)
.And("Arrgruppe.Tekst").Like("mytext");`

Он генерирует ошибочный запрос из-за .And (), потому что у меня есть псевдонимы, прикрепленные к двум столбцам с одинаковым именем - оператор And находится здесь:

... AND (ArrGruppe.Tekst LIKE @ArrGruppe.Tekst1
)',N'@Kategori0 tinyint,@ArrGruppe.Tekst1 varchar(10)',@Kategori0=20,@ArrGruppe.Tekst1='mytext'

Мне не удалось найти в Google ничего, что могло бы решить эту проблему. Как мне написать запрос Subsonic для генерации допустимого параметра SQL для ArrGruppe.Tekst ??

РЕДАКТИРОВАТЬ: Проблема была решена с обновлением 2.1 Final до версии 2.2.


person kerbou    schedule 12.05.2009    source источник


Ответы (1)


new Select("GTekst = ArrGruppe.Tekst", "GLTekst = ArrGruppeLinie.Tekst")
  .From(ArrGruppeLinie.Schema)
  .InnerJoin(ArrGruppe.Columns.Id, ArrGruppeLinie.Columns.ArrGruppeID)
  .Where(ArrDeltager.Columns.Kategori).IsLessThan(20)
  .And(Arrgruppe.Columns.Tekst).Like("mytext");

Если нет, попробуйте обновить до последней версии SubSonic http://code.google.com/p/subsonicproject/downloads/list, потому что вы можете столкнуться со следующей проблемой (исправлено в 2.2)

Проблема Google 31 - где выражение неправильно форматируется с указанием полного имени столбца

person Adam Cooper    schedule 12.05.2009
comment
У меня есть ситуация, когда у меня есть две таблицы с совпадающими именами столбцов ArrGruppe.Tekst и ArrGruppeLinie.Tekst, то есть. Возникает вопрос: как написать запрос SubSonic, в котором я генерирую псевдонимы для имен столбцов, чтобы сделать некоторый допустимый SQL - и в том же запросе создать AND-фильтр на основе одного из столбцов, для которого я только что создал псевдоним? Я пробовал ваш подход - приведенное выше генерирует следующее: AND Tekst LIKE @ Tekst1 ... что недопустимо, потому что Tekst - неоднозначный столбец, потому что их два. Пожалуйста, напишите еще раз, если вам нужна дополнительная информация: o) - person kerbou; 12.05.2009
comment
Я отредактировал приведенный выше запрос, поэтому он должен исправить ошибку неоднозначного имени столбца. Дай мне знать, если это не так - person Adam Cooper; 12.05.2009
comment
Прости. Он генерирует следующее предложение AND: ... AND ArrGruppe.Tekst LIKE @ ArrGruppe.Tekst1, что недопустимо, потому что в имени параметра не может быть точки. - person kerbou; 12.05.2009
comment
Очень странно, какую версию SubSonic вы используете? - person Adam Cooper; 12.05.2009
comment
2.1 Заключение ... Следует ли мне отправлять отчет об ошибке на subsonicproject.com? - person kerbou; 13.05.2009
comment
Попробуйте 2.2 и посмотрите, возникнет ли у вас такая же проблема. code.google.com/p/subsonicproject/downloads/list - person Adam Cooper; 13.05.2009
comment
Работает как шарм - я вижу в примечаниях к выпуску, что была проблема с псевдонимами на WHERE, поэтому я полагаю, что она была исправлена ​​между 2.1 и 2.2. Спасибо, что помогли мне в этом - я очень ценю это: o) - person kerbou; 13.05.2009