Как написать этот выбор, используя объекты NHibernate?NHibernate выбрать из более чем одной таблицы
Select a.Id, a.Name, b.Data
From Table1 a, Table2 b
Where a.Id between :1 and :2
And :3 = b.Period(+)
And 1 = b.Type(+)
And a.Id = b.Table1Id(+)
Order by 1
I.e. он дает все таблицы Table1 с таблицей2.Дата для каждой строки, даже если для нее нет данных таблицы2 (тогда будет задано 0 или нуль)
Классы и сопоставления для таблиц 1 и таблицы 2 уже созданы и работают. Также добавлена ссылка для b.Table1Id.
Таким образом, проблема в основном (+) оператора.
Сопряжения: Таблица 1 очень проста и не относится ни к каким таблицам. Table2:
Table("Table2");
CompositeId()
.KeyProperty(x => x.Type)
.KeyProperty(x => x.Table1Id)
.KeyProperty(x => x.Period);
Map(x => x.Type);
Map(x => x.Table1Id);
Map(x => x.Period);
Map(x => x.Data);
ReferencesAny(x => x.TableG)
.IdentityType<string>()
.EntityTypeColumn("Type")
.EntityIdentifierColumn("Table1Id")
.AddMetaValue<Table1>("1")
.AddMetaValue<Table33>("33");
Table1 и Table33 ingerites от одного родительского класса TableG. Соответственно, запрос Sql обновляется.
Вы также можете показать сопоставления? и что вы пытались запустить этот запрос в nhibernate? – mridula
Сопоставления добавлены. И я не пытался это делать вообще, я не знаю, с чего начать. – Ksice