我正在使用NHibernate从SQL Server获取数据。
获取我写的数据var result = Repository.QueryOver<table_reference>().Where(c => c.Amount >100).List()
现在我希望通过类似
的外键引用来过滤结果Repository.QueryOver<TaxInvoicePassing>().Where(c => c.Branch.Employee.Salary > 10000).List()
我怎样才能做到这一点?
一种方法是迭代每个表的记录,然后添加结果范围
提前致谢
答案 0 :(得分:2)
使用QueryOver
,您可以尝试:
// declare the alias
Branch branch = null;
Employee employee = null;
Session.QueryOver<TaxInvoicePassing>() // get a queryOver of TaxInvoicePassing
.JoinAlias(t => t.Branch, () => branch) // add a join with Branch
.JoinAlias(() => branch.Employee, () => employee) // add a join with Employee
.Where(c => employee.Salary > 10000) // add where filter on employee's salary
.List();
使用Linq
,可以像你问的那样表达:
Session.Query<TaxInvoicePassing>()
.Where(c => c.Branch.Employee.Salary > 10000) // this expression will be converted on a join
.List();
我会将这些查询移到存储库对象中而不是暴露它。