|zyciis| Nhibernate 如何进行有函数转换的子查询,谢谢

zyciis166 2010-08-04 11:43:26
如SQL
select
(select top 1 [name]
from sys_manager
where sys_company.guid = sys_manager.companyguid) AS FirstManager
from sys_company
用以下方法可以生成

[NUnit.Framework.Test]
public void SubFieldQuery()
{
var session = Z.Core.NHibernateCore.NHibernateHelper.GetCurrentSession();
var subCrit = NHibernate.Criterion.DetachedCriteria.For<Model.Sys.Manager>("M");
subCrit.SetProjection(NHibernate.Criterion.Projections.Property("Name"));
subCrit.SetMaxResults(1);
subCrit.Add(NHibernate.Criterion.Expression.EqProperty("M.ParentCompany.Guid", "C.Guid"));
var crit = session.CreateCriteria<Model.Sys.Company>("C");
crit.SetProjection(NHibernate.Criterion.Projections.ProjectionList()
.Add(NHibernate.Criterion.Projections.SubQuery(subCrit)));
var list = crit.List();
Console.Write(list.Count);
}

然后我要生成语句
select
(select top 1 [name]
from sys_manager
where sys_company.guid = Convert(nvarchar(50), sys_manager.companyguid) ) AS FirstManager
from sys_company

[NUnit.Framework.Test]
public void SubFieldQuery()
{
var session = Z.Core.NHibernateCore.NHibernateHelper.GetCurrentSession();
var subCrit = NHibernate.Criterion.DetachedCriteria.For<Model.Sys.Manager>("M");
subCrit.SetProjection(NHibernate.Criterion.Projections.Property("Name"));
subCrit.SetMaxResults(1);
subCrit.Add(NHibernate.Criterion.Expression.Sql("Convert(nvarchar(50), {alias}.CompanyGuid) = this_.Guid"));
var crit = session.CreateCriteria<Model.Sys.Company>("C");
crit.SetProjection(NHibernate.Criterion.Projections.ProjectionList()
.Add(NHibernate.Criterion.Projections.SubQuery(subCrit)));
var list = crit.List();
Console.Write(list.Count);
}

上面的写法也可以生成
但是这里有一个地方就是写死的
"Convert(nvarchar(50), {alias}.CompanyGuid) = this_.Guid"
这里的this_.Guid 是我根据SQL最终出来的时候自己补上去的
那这里的this_.Guid要怎么改呢,有没有像
"Convert(nvarchar(50), {alias}.CompanyGuid) = {parent}.Guid"
谢谢
...全文
208 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
phil999 2010-10-10
  • 打赏
  • 举报
回复
看的很纠结
zyciis166 2010-08-06
  • 打赏
  • 举报
回复
UP....
zyciis166 2010-08-04
  • 打赏
  • 举报
回复
没有哦。。。

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧