我需要知道JoinQueryOver和JoinAlias之间的区别,以及什么时候使用它们?
发布于 2011-03-24 22:33:57
从功能上讲,它们做的是相同的事情,创建到另一个实体的连接。唯一的区别是它们返回的是什么。JoinQueryOver返回一个新的QueryOver,其中当前实体是联接的实体,而JoinAlias返回将当前实体作为原始根实体的原始QueryOver。
无论你使用哪一个,都是个人喜好的问题:(来自http://nhibernate.info/doc/nh/en/index.html#queryqueryover)
IQueryOver<Cat,Kitten> catQuery =
session.QueryOver<Cat>()
.JoinQueryOver<Kitten>(c => c.Kittens)
.Where(k => k.Name == "Tiddles");
和
Cat catAlias = null;
Kitten kittenAlias = null;
IQueryOver<Cat,Cat> catQuery =
session.QueryOver<Cat>(() => catAlias)
.JoinAlias(() => catAlias.Kittens, () => kittenAlias)
.Where(() => kittenAlias.Name == "Tiddles");
在功能上相同。注意在第二个查询中kittenAlias是如何被明确引用的。
https://stackoverflow.com/questions/5416560
复制相似问题