【发布时间】:2011-03-19 01:29:06
【问题描述】:
我在 Linq to Nhibernate 产生带有外部连接的查询时遇到问题。
例如:
return Session.Linq<ClientContact>().Where(c => c.Client.Id = 13).ToList();
产生类似于以下内容的查询:
SELECT...
FROM mw_crafru.clientcontact this_,
mw_crafru.client client1_,
mw_crafru.relationshiptype relationsh4_
WHERE this_.clientid = client1_.clientid(+)
AND this_.relationshiptypeid = relationsh4_.relationshiptypeid
AND client1_.clientid = :p0;:p0 = 13
注意外部连接 this.clientid = client1.clientid(+)。嘘!
为了解决这个问题,我重新使用了 Session.CreateCriteria。
return Session.CreateCriteria(typeof (ClientContact)).Add(Restrictions.Eq("Client.Id", clientId)).List<ClientContact>();
产生以下查询:
SELECT...
FROM mw_crafru.clientcontact this_,
mw_crafru.client client1_,
mw_crafru.relationshiptype relationsh4_
WHERE this_.clientid = client1_.clientid
AND this_.relationshiptypeid = relationsh4_.relationshiptypeid
AND client1_.clientid = :p0;:p0 = 13
注意没有外连接 this.clientid = client1.clientid。耶!
有人知道为什么会这样吗?
【问题讨论】:
标签: nhibernate oracle9i linq-to-nhibernate