- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个表:
全部:编号 | propA |支持B |一些其他列
隐藏:编号 | propA |支持B
和相应的类(已映射,尚未映射关系)
我想从第一个表中获取所有行,减去任何匹配 propA 或 propB 属性的结果。
我设法通过 Criteria API 做到了,但想看看它是如何通过 QueryOver API 完成的,如果可能的话,没有子查询,但有一个 left excluding join。
条件版本:
var dc1 = DetachedCriteria.For<hidden>()
.Add(Restrictions.IsNotNull(Projections.Property("propA")))
.SetProjection(Projections.Property("propA"));
var dc2 = DetachedCriteria.For<hidden>()
.Add(Restrictions.IsNotNull(Projections.Property("propB")))
.SetProjection(Projections.Property("propB"));
var query = db
.CreateCriteria<all>()
.Add(Restrictions.On<all>(c => c.someOtherColumn).IsLike("1"))
.Add(Subqueries.PropertyNotIn("propA", dc1))
.Add(Subqueries.PropertyNotIn("propB", dc2))
大致给出:
SELECT all.*
FROM all
WHERE (all.someOtherColumn LIKE '1')
and all.propA not in (SELECT hidden.propA FROM hidden WHERE hidden.propA IS NOT NULL)
and all.propB not in (SELECT hidden.propB FROM hidden WHERE hidden.propB IS NOT NULL)
没关系,虽然从性能上看这会更好:
SELECT all.*
FROM all
LEFT JOIN hidden ON all.propA = hidden.propA
LEFT JOIN hidden ON all.propB = hidden.propB
WHERE hidden.propA IS NULL
AND hidden.propB IS NULL
AND (all.someOtherColumn LIKE '1')
如果无法生成具有未映射关系的声明,我愿意接受有关映射的建议。
最佳答案
在我看来,如果没有通过 QueryOver 映射的关系,就不可能创建连接。看这个answer .
使用子查询你可以做这样的事情:
All allAlias = null;
var result = Session.QueryOver(() => allAlias)
.WhereRestrictionOn(x => x.someOtherColumn).IsLike('1')
.WithSubquery.WhereNotExists(QueryOver.Of<hidden>()
.Where(h => h.propA == allAlias.propB || h.propB == allAlias.propB)
.Select(h => h.Id))
.List();
关于c# - Fluent NHibernate QueryOver 选择不在另一个表中的项目(左连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44904844/
我有以下疑问: Model.RampActiveHour rah = null; var defaultWeekQuery = QueryOver.Of()
为了保持我的查询独立并可能重用,我倾向于在 NH2 中这样做: public class FeaturedCarFinder : DetachedCriteria { public Featu
我正在尝试在 queryover 调用中解耦 orderby,但这无法编译 protected static void AddOrder(IQueryOver criteria, Expression
我在 Nhibernate QueryOver 中有一个查询,它带回了一组剧集对象(剧集是一个护理咒语),这些对象又具有一组剧集状态作为每个剧集的属性。但是我想改变这一点,以便每一集只带回该集的最新状
假设我有三个简单的表 schedule { Student student { get; set;} Teacher teacher { get; set;} bool Del
我有一个小问题:我会在我的 QueryOver 中插入一个条件来检查变量值。像这样: var qOver = QueryOver.Of(() => myMod) .J
如何通过字符串属性的长度限制查询?例如。就像是: NHSession.QueryOver() .Where(p => p.RegistryCode.Length == 8) 最佳答案 像这样的
尝试使用 QueryOver 和标记的枚举查询。这适用于 Nhibernate.Linq: var results = repo.Query() .Where(x => (x.Classifica
我正在尝试使用 QueryOver 从数据库更新记录. 我的代码最初创建一个实体并保存在数据库中,然后在数据库外部更新相同的记录(来自其他程序,手动或在其他机器上运行的相同程序),当我调用 query
我想要做的是显示一个简单的数据网格,其中包含实体数据及其子项的聚合数据。例如,让我们使用订单和订单项。我想显示订单信息和订单项的数量。 订单 ID、订单日期、NumOfLineItems 现在通常在
我想用 QueryOver 编写这样一个查询,以便结果 SQL 将类似于以下内容: Select Bar, count(*) from Foo group by Bar having count(*)
我想模拟这个查询: SELECT * FROM FOO WHERE ID IN (1,2,3) 我怎样才能在 FNH 中做到这一点? var ids = new List{1,2,3}; var re
我正在尝试从我的 User 对象中加载多对多集合中的角色。 Role role = null; IQueryOver query = session.QueryOver()
我有以下使用子查询的 NHibernate 查询: NHContext.Session.QueryOver() .WithSubquery.WhereProperty(x =>
我有这个 设想: class User { Id, UserName } class UserRelationship { User GroupUser, User MemberUser } and
我在投影 sql Coalesce 函数时遇到了 nhibernate 问题。 我正在比较来自两个不同实体的两个具有相同名称的字符串属性。在生成的 SQL 中,仅比较第一个实体的相同属性,如下所示:
StackOverflow 用户您好, 我遇到了这个问题我有三个 QueryOver,每个都返回一个候选 id 列表,然后我用它来引入这些候选。为此我编写了以下代码。 private
如何使用 QueryOver 重写此 SQL?我不确定 QueryOver 的连接优先级和解析是如何工作的。 SELECT DISTINCT T1.* FROM T1 LEFT JOIN T2
我的类(class)的简单示例: public class Post { public IEnumerable Tags { get; set; } } 用户检查一些感兴趣的标签来过滤帖子列表
考虑这个人为的域: namespace TryHibernate.Example { public class Computer { public int Id { get; set; }
我是一名优秀的程序员,十分优秀!