1

私は、広告に複数のタグを割り当てることができ、タグを複数の広告に割り当てることができるという点で、次の3つのテーブル(簡潔さから削除された関連性のないフィールド)で構成される多対多の関係を持っています。

広告

(PK) Id

AdvertsTags

(FK) AdvertId
(FK) TagId

タグ

(PK) Id

特定のタグ(つまり特定のTagId)が割り当てられている広告の数をカウントするNHibernateクエリを作成したいと思います。

通常の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 に答える