1

で、特定のリストにないエンティティのリストを返すにNHibernateはどうすればよいですか?

Clientエンティティがあり、 という名前のリストが定義されているとしますIList<Client> notInClients。私は自分のSQLを次のようにしたいことを知っています:

SELECT *
FROM Clients c1
WHERE c1.ClientId NOT IN (
    SELECT *
    FROM Clients c2
    WHERE c2.ClientId IN ('1', '2', '3', '4')
)

これには a を使用する必要があると思いDetachedCriteriaます。たぶん次のようなもの:

var clients = session.CreateCriteria("c1")
    .Add(
        Subqueries.PropertyNotIn("c1.ClientId",
            DetachedCriteria.For<Client>("c2").HOW_DO_I_ADD_MY_LIST)));

サブクエリの作成方法がわからないだけだと思います。私はこれで正しい道を進んでいますか?

4

1 に答える 1

1

理解した:

var notGuids = from c in notClients
               select c.ClientId;

var clients = unitOfWork.Session.CreateCriteria(typeof(Client))
    .Add(Expression.Not(Expression.In("ClientId", notGuids.ToArray()))).List<Client>();
于 2012-11-27T20:41:46.000 に答える