Я новичок в NHibernate, поэтому я уверен, что мне просто не хватает чего-то фундаментального.
У меня есть таблица с именем Issue, в которой есть столбец ParentId.ParentId может ссылаться на разные таблицы (например, Project или Customer и т. Д.). Как я могу выполнить этот запрос в NHibernate, чтобы я мог отображать только те проблемы, которые относятся к Project.Вот что я попробовал.
DetachedCriteria dCriteria = DetachedCriteria.For<Issue>("issue")
.SetProjection(Projections.Property("ParentId"))
.CreateAlias("Project", "project", NHibernate.SqlCommand.JoinType.InnerJoin)
.Add(Restrictions.EqProperty("issue.ParentId", "project.Id"))
;
var issues = Session.CreateCriteria<Issue>("issue")
.Add(Subqueries.Exists(dCriteria)).List<Issue>();
return issues;
мое отображение выглядит следующим образом.Обратите внимание, что у меня нет никаких ссылок на родительский объект, потому что я не знаю, что это будет.
<class name="Issue" table="dbo.Issue" lazy="true">
<id name="Id" column="Id">
<generator class="assigned" />
</id>
<property name="ParentId" column="ParentId" />
<property name="Name" />
<property name="Description" />
Буду признателен за любые указания.
возможно, мне следует немного объяснитьБольше.У меня есть сетка всех проблем, и я хочу показать столбец типа, чтобы мы знали, какой тип проблемы (проект и т. Д.) Столбец не служит никакой другой цели, кроме этого, поэтому я не верю, что он действителен длядобавить его в базу данных.В SQL достаточно просто отфильтровать данные с помощью объединения или использования Exists.Должен быть похожий метод в NHibernate, поэтому мне не нужно проходить через каждый проект для всех его проблем.