Asp.net 无法对nhibernate中的第一个表使用IsLike运算符
一种解决方案是将Asp.net 无法对nhibernate中的第一个表使用IsLike运算符,asp.net,asp.net-mvc,linq,nhibernate,linq-to-nhibernate,Asp.net,Asp.net Mvc,Linq,Nhibernate,Linq To Nhibernate,一种解决方案是将QueryOver定义分为两部分: MpProviderProfiles = MpProviderProfiles .Where(x => x.ProviderCode.IsLike("%" + ProviderCode + "%")); 注意:赋值query=query.And(…是不需要的。这些方法(Where(),和()将在内部集合中添加限制,但在我的方法中,我返回查询对象。我如何同时返回2个对象?在你的方法中,你不返回查询!这非常重要。你调用List()
QueryOver
定义分为两部分:
MpProviderProfiles = MpProviderProfiles
.Where(x => x.ProviderCode.IsLike("%" + ProviderCode + "%"));
注意:赋值
query=query.And(…
是不需要的。这些方法(Where()
,和()将在内部集合中添加限制,但在我的方法中,我返回查询对象。我如何同时返回2个对象?在你的方法中,你不返回查询!这非常重要。你调用List()
这意味着立即执行查询。如果您想处理查询,应该按照我的回答将其拆分,然后返回顶部的query
。您可以稍后添加更多限制,最后调用List()
。这有意义吗?您已经创建了两个对象。但是我如何才能创建一个对象。我需要Mp_ProviderProfile列表。我最后创建了与您相同数量的对象。但我一直在引用由QueryOver()生成的第一个查询;
而您没有该引用。我的方法只是将两个查询都保留在不同的变量中。您将返回什么以及在何处调用List()
取决于您。但是如果您返回List()
则无法应用更多限制,因为查询已在(!string.IsNullOrEmpty(providercity))时执行{query=query.Where(x=>x.Location.City.IsLike(“%”+providercity+“%”);如何使用相同的}查询位置表
MpProviderProfiles = MpProviderProfiles
.Where(x => x.ProviderCode.IsLike("%" + ProviderCode + "%"));
var query = Session.QueryOver<Mp_ProviderProfile>();
var userQuery = query.JoinQueryOver<User>(x => x.AccountInfo);
// Mp_ProviderProfile
query.Where(x => x.ProviderCode.IsLike("%" + ProviderCode + "%"));
// User
userQuery.And(x => x.UserName.IsLike("%" + customerName + "%"));