|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"
谢谢
...全文
139 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
phil999 2010-10-10
看的很纠结
  • 打赏
  • 举报
回复
zyciis166 2010-08-06
UP....
  • 打赏
  • 举报
回复
zyciis166 2010-08-04
没有哦。。。
  • 打赏
  • 举报
回复
相关推荐
发帖
.NET社区
加入

5.9w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2010-08-04 11:43
社区公告
暂无公告