0

次のコードが何をするのか、誰かが英語で説明できますか?

var subCriteria = DetachedCriteria.For<UserLocation>();

subCriteria.SetProjection(Projections.Property("LocationId"))
           .Add(Restrictions.Eq("UserId", userId));

return UoW.Session.CreateCriteria(typeof(Location))
       .Add(Subqueries.PropertyIn("LocationId", subCriteria)).List<Location>();
4

1 に答える 1

2

コードを実行して、それによって生成されたSQLを確認できますか?

私はそれがこれにかなり近いものだと推測しています:

SELECT *
FROM Location
WHERE LocationId IN (SELECT LocationId FROM UserLocation WHERE UserId = @UserId)

UserIdに基づいて、特定のユーザーのすべての場所を検索しようとしているようです。

Subqueries.PropertyInは「内部選択」を実行しています。
SetProjectionは、可能な列のサブセットを返します。
制限は、WHERE句の作成に使用されます。
DetachedCriteriaとCreateCriteriaは、SELECTステートメントを作成するために使用されます。
最後のリストはクエリを実行し、指定されたタイプのオブジェクトのリストを返します。

于 2010-01-27T09:31:12.183 に答える