Fel*_*ani 2 c# nhibernate queryover
我有一个使用NHibernate和C#语言的应用程序.我有一个模型与一些关系,我想创建一个查询只获得一个值.我尝试过这样的事情:
public long GetIdCompany(long number)
{
return session.QueryOver<Report>()
.Where(x => x.Number == number)
.Select(x => x.Equipament.Company.Id)
.Take(1);
}
Run Code Online (Sandbox Code Playgroud)
但我没有工作.我只是想参加IdCompany模特Report.Equipament.Company.Id.它可以在queryover,linq,hql等...
HQL
return session.CreateQuery(
"select e.Company.id from Report r " +
" inner join r.Equipament e " +
"where r.Number = :number")
.SetInt64("number", number)
.UniqueResult<long>();
Run Code Online (Sandbox Code Playgroud)
LINQ
return session.Query<Report>()
.Where(x => x.Number == number)
.Select(x => x.Equipament.Company.Id)
.Single();
Run Code Online (Sandbox Code Playgroud)
QueryOver
请参阅GSerjo的回答.
你应该使用JoinAlias,所以你的请求看起来像
public long GetIdCompany(long number)
{
Equipament equipamentAlias = null;
return session.QueryOver<Report>()
.Where(x => x.Number == number)
.JoinAlias(x => x.Equipament, () => equipamentAlias)
.Select(x => equipamentAlias.Company.Id)
.SingleOrDefault<long>();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7326 次 |
| 最近记录: |