此SelectClauseVisitor不支持NHibernate LINQ 3.0 Oracle表达式类型10005
我有以下LINQ查询此SelectClauseVisitor不支持NHibernate LINQ 3.0 Oracle表达式类型10005,oracle,nhibernate,distinct,Oracle,Nhibernate,Distinct,我有以下LINQ查询 QueryResult<List<PersonDemographic>> members = new QueryResult<List<PersonDemographic>>(); var query = (from ms in this.Session.Query<MemberSummary>() where ms.NameSearch.StartsWith(f
QueryResult<List<PersonDemographic>> members = new QueryResult<List<PersonDemographic>>();
var query = (from ms in this.Session.Query<MemberSummary>()
where ms.NameSearch.StartsWith(firstName.ToUpper())
&& ms.NameSearch2.StartsWith(lastName.ToUpper())
select new PersonDemographic
{
FirstName = ms.FirstName.ToProperCase(),
LastName = ms.LastName.ToProperCase(),
PersonId = ms.Id,
Address = new Address
{
Line1 = ms.AddressLine1.ToProperCase(),
Line2 = ms.AddressLine2.ToProperCase(),
City = ms.City.ToProperCase(),
State = ms.State,
Zipcode = ms.Zipcode,
},
PhoneNumber = new PhoneNumber
{
Number = string.IsNullOrWhiteSpace(ms.PhoneNumber) ? null : Regex.Replace(ms.PhoneNumber, @"(\d{3})(\d{3})(\d{4})", "$1-$2-$3")
}
});
if (this.Session.Transaction.IsActive)
{
members.Data = query.Distinct().Take(15).ToList();
}
else
{
using (var transaction = this.Session.BeginTransaction())
{
members.Data = query.Distinct().Take(15).ToList();
transaction.Commit();
}
}
QueryResult成员=新QueryResult();
var query=(从此.Session.query()中的ms)
其中ms.NameSearch.StartsWith(firstName.ToUpper())
&&ms.NameSearch2.StartsWith(lastName.ToUpper())
选择新人像图
{
FirstName=ms.FirstName.TopropertCase(),
LastName=ms.LastName.TopropertCase(),
PersonId=女士Id,
地址=新地址
{
Line1=ms.AddressLine1.TopropertCase(),
Line2=ms.AddressLine2.TopropertCase(),
City=ms.City.toProperties(),
State=State女士,
Zipcode=Zipcode女士,
},
PhoneNumber=新电话号码
{
Number=string.IsNullOrWhiteSpace(ms.PhoneNumber)?null:Regex.Replace(ms.PhoneNumber,@“(\d{3}”)(\d{3})(\d{4})”,“$1-$2-$3”)
}
});
if(this.Session.Transaction.IsActive)
{
members.Data=query.Distinct().Take(15.ToList();
}
其他的
{
使用(var transaction=this.Session.BeginTransaction())
{
members.Data=query.Distinct().Take(15.ToList();
Commit();
}
}
代码正在事务部分下运行。如果我使用它没有明显的区别,我没有问题。添加Distinct会给我一个例外
{“此SelectClauseVisitor不支持表达式类型10005。”}
我找不到任何确定的东西。有人能帮忙吗
谢谢,
Paul在该查询中,NH可能不知道如何转换为SQL:
- ToProperCase(看起来像您的扩展方法)
- string.IsNullOrWhiteSpace(这是.NET4中新增的,NH是根据3.5编译的)
- Replace(这在SQL中是不可能的,除非您有一个支持它的DB并为它编写一个方言)