Этот оператор SQL вернет все таблицы, которые имеют имя Azure
select * from INFORMATION_SCHEMA.COLUMNS SYS_COLS_TBL
WHERE SYS_COLS_TBL.TABLE_NAME ='Azure'
AND SYS_COLS_TBL.COLUMN_NAME = 'GroupId'
, но может быть, например, две такие таблицы ... но в разных схемах .И если это произойдет, мы можем запросить dbo.Azure
.. в то время как SomeOtherSchema.Azure
имеет столбец GroupId
.Это исправит это:
select * from INFORMATION_SCHEMA.COLUMNS SYS_COLS_TBL
WHERE SYS_COLS_TBL.TABLE_NAME ='Azure'
AND SYS_COLS_TBL.COLUMN_NAME = 'GroupId'
AND SYS_COLS_TBL.TABLE_SCHEMA = 'dbo'
Также для поддержки более сложных запросов (объединений JOIN) удалите this _. :
вместо:
then this_.GroupId else '' end)
использование:
then GroupId else '' end)
NHibernate предоставит правильный псевдоним на основе контекста