1

我有一个由以下 3 个表组成的多对多关系(从简洁中删除了非相关字段),其中一个广告可以分配多个标签,一个标签可以分配给多个广告。

广告

(PK) Id

广告标签

(FK) AdvertId
(FK) TagId

标签

(PK) Id

我想创建一个 NHibernate 查询来计算有多少广告被分配了特定的标签(即特定的 TagId)。

在普通的 sql 中,我会按照以下方式做一些事情:

SELECT COUNT(*)
FROM Adverts A
JOIN AdvertsTags AT ON A.Id = AT.AdvertId
WHERE AT.TagId = @tagId

Advertmy和Tagmodels的属性名称与上表中的字段名称一致。

我不知道使用 NHibernate 的推荐方法是什么?

4

1 回答 1

1

也许这样的事情会有所帮助:

var count = session
    .CreateCriteria(typeof(Advert))
    .SetProjection(Projections.RowCount())
    .CreateCriteria("Tags")
    .Add(Expression.Eq("TagId", tagId)
    .UniqueResult<long>();

更多信息:http ://www.nhforge.org/doc/nh/en/index.html#querycriteria-associations

于 2012-06-02T19:57:57.533 回答