У меня есть следующий случай:
В базе данных SqlServer есть две таблицы, определенные следующим образом:
CREATE TABLE [dbo].[T1](
[c1] [nvarchar](50) NOT NULL,
[c2] [int] NULL,
CONSTRAINT [PK_T1] PRIMARY KEY CLUSTERED ([c1] ASC)) ON [PRIMARY]
CREATE TABLE [dbo].[T2](
[c1] [nvarchar](50) NOT NULL,
[c2] [int] NULL,
CONSTRAINT [PK_T2] PRIMARY KEY CLUSTERED ([c1] ASC)) ON [PRIMARY]
Я добавляю одну запись в T1, а другую в T2, например:
INSERT INTO [dbo].[T1] ([C1],[C2]) VALUES ('a', 1)
INSERT INTO [dbo].[T2] ([C1],[C2]) VALUES ('a', 2)
Затем я выполняю следующий код C # (где Session - сеанс NHibernate):
var data = Session.CreateSQLQuery("SELECT * FROM T1 JOIN T2 ON T1.C1 = T2.C1").List();
В «data» я получаю одну запись с четырьмя столбцами.Значения следующие: «a», 1, «a», 1.
Если я выполняю запрос вручную в Sql Server Management Studio, я получаю хорошие результаты «a», 1, «a», 2.По какой-то причине NHibernate не может различать столбцы с одинаковыми именами или псевдонимами.
Кто-нибудь знает, как, если есть способ заставить эту работу?Я не могу гарантировать использование уникальных псевдонимов вместо *, мне также нужно использовать необработанный запрос вместо сопоставления объектов.В настоящее время мой единственный обходной путь - использовать старый добрый набор данных без NHibernate.Буду очень признателен за все предложения и помощь:)