作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
任何人都知道使用 NHibernate.Linq 批处理 NHibernate 查询的方法,就像使用 MultiCriteria 和 ICriteria 对象一样?
使用 MultiCriteria,我可以创建如下内容:
var crit = session.CreateMultiCriteria()
.Add(session.CreateCriteria(typeof(Entity1)).Add(Restrictions.Eq("Property1","Value"))
.Add(session.CreateCriteria(typeof(Entity2)).Add(Restrictions.Eq("Property2","Value2"));
var result = crit.List();
var list1 = (IList)result[0];
var list2 = (IList)result[1];
var crit = session.CreateMultiCriteria()
.Add(session.Linq<Entity1>().Where(x => x.Property1 == "Value1")
.Add(session.Linq<Entity2>().Where(x => x.Property2 == "Value2");
var result = crit.List();
var list1 = (IList<Entity1>)result[0];
var list2 = (IList<Entity2>)result[1];
最佳答案
var query = from q in session.Linq<Person>()
where q.FirstName.StartsWith(firstName)
&& q.LastName.StartsWith(lastName)
&& q.Phones.Any(p => p.Number.Contains(phone))
select q;
// This block of code was found in the NHibernate.Linq source
// using NHibernate.Linq.Visitors;
// using NHibernate.Engine;
System.Linq.Expressions.Expression expression = query.Expression;
expression = Evaluator.PartialEval(expression);
expression = new BinaryBooleanReducer().Visit(expression);
expression = new AssociationVisitor((ISessionFactoryImplementor)session.SessionFactory).Visit(expression);
expression = new InheritanceVisitor().Visit(expression);
expression = CollectionAliasVisitor.AssignCollectionAccessAliases(expression);
expression = new PropertyToMethodVisitor().Visit(expression);
expression = new BinaryExpressionOrderer().Visit(expression);
NHibernateQueryTranslator translator = new NHibernateQueryTranslator(session);
object results = translator.Translate(expression, ((INHibernateQueryable)query).QueryOptions);
// My LINQ query converted to ICriteria
ICriteria resultsCriteria = results as ICriteria;
// Convert to criteria that returns the row count
ICriteria rowCountCriteria = CriteriaTransformer.TransformToRowCount(resultsCriteria);
IList multiResults = session.CreateMultiCriteria()
.Add(resultsCriteria.SetMaxResults(20))
.Add(rowCountCriteria)
.List();
IList people = (IList)multiResults[0];
int resultsCount = (int)((IList)multiResults[1])[0];
关于linq - NHibernate.Linq 和 MultiCriteria,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/684696/
任何人都知道使用 NHibernate.Linq 批处理 NHibernate 查询的方法,就像使用 MultiCriteria 和 ICriteria 对象一样? 使用 MultiCriteria,
我正在使用 Sonar 的本地实例,没有集中式基础设施。为了将我的项目的配置保留在 pom.xml 中,我想通过 maven 而不是通过 Sonar UI 配置项目。对我来说,这样做的优点是可以将所有
我是一名优秀的程序员,十分优秀!