标签: queryover

Nhibernate Queryover 子查询和 whereexists 有 2 个条件

考虑以下对象结构。

Product
id : int
name : string
attribute : list of Attribute

Attribute
id : int
name: string
value : string
product_id : int
Run Code Online (Sandbox Code Playgroud)

问题是:使用 QueryOver 如何形成子查询以返回具有以下条件的所有产品:

选择同时具有属性的所有产品:

属性名称=“颜色”值=“红色”并且属性名称=“尺寸”值=“XXL”?

编辑:示例sql:

select * from Product p where
exists (select id from attribute where name = 'Color' and value = 'Red' and product_id = p.id)
and
exists (select id from attribute where name = 'Size' and value = 'XXL' and product_id = p.id)
Run Code Online (Sandbox Code Playgroud)

.net fluent-nhibernate queryover

2
推荐指数
1
解决办法
2294
查看次数

Nhibernate 存在于何处 queryOver

我有以下对象

public class Document
{
    public Guid Id { get; set; }
    public ISet<Tag> Tags { get; set;}
    ...
}

public class Tag 
{
    public Guid Id { get; set;} 
}
Run Code Online (Sandbox Code Playgroud)

这是多对多关系,但我没有中间 DocumentTag 对象。我正在尝试使用 QueryOver 语法返回具有所有一组标签的所有文档。这是我到目前为止所拥有的。

Guid[] tagsThatMustMatch = ...;
var result = Session.QueryOver<Document>()
               .WithSubquery
               .WhereExists(QueryOver.Of<Tag>().Where(t => tagsThatMustMatch.Contains(t.Id))
               .List()
Run Code Online (Sandbox Code Playgroud)

我很难表达这个要求。我知道我必须动态构建一个查询,该查询将为每个必须匹配的标签提供一个WhereExists。这些WhereExists 需要进行与运算。我遇到的另一个问题是WhereExists 方法需要接受DetachedQuery。但我没有办法限制它只查看该文档没有所有标签的标签。

有没有什么例子可以让我看到如何做这样的事情?

nhibernate queryover

2
推荐指数
1
解决办法
6162
查看次数

什么可以用作NHibernate QueryOver别名?

到目前为止,我知道局部变量或局部属性可以用作别名

ClassA _aliasA;
_session.QueryOver(x => x.ClassA, () => _aliasA);
Run Code Online (Sandbox Code Playgroud)

要么

ClassA AliasA { get; set; }
_session.QueryOver(x => x.ClassA, () => AliasA);
Run Code Online (Sandbox Code Playgroud)

我想知道其他选项是可行的.比如,外部类的属性是有效选项吗?

class ClassGenericAliases
{
    ClassA Class { get; set; }
}

_session.QueryOver(x => x.ClassA, () => ClassGenericAliases.ClassA);
Run Code Online (Sandbox Code Playgroud)

静态可以用作别名吗?是否还有其他声明别名的选项?

nhibernate-3 queryover

1
推荐指数
1
解决办法
1万
查看次数

Nhibernate Linq查询QueryOver

我有以下代码:

1: ids = GetAnArrayOfIds();

2: jobEntities = jobEntities.Where(j => j.Locations.Select(l => l.Id).Any(ids.Contains));
Run Code Online (Sandbox Code Playgroud)

如何使用QueryOver编写2?

谢谢,

nhibernate linq-to-nhibernate queryover

1
推荐指数
1
解决办法
2231
查看次数

nHibernate QueryOver以编程方式构建?

您好,是否有一个从代码中以编程方式从nhibernate构建查询的选项?

我不知道有多少限制,我正在构建自动机的表数将从对象列表进行查询.

c# asp.net nhibernate queryover

1
推荐指数
1
解决办法
1708
查看次数

来自ICriteria的IQueryOver

我有这种情况:

  1. var query = Session.QueryOver<T>()
  2. var criteria = query.UnderlyingCriteria.SomethingThereAddCriterion()

如何将标准转换回IQueryOver()?

nhibernate icriteria queryover

1
推荐指数
1
解决办法
185
查看次数

Nhibernate QueryOver - 为分页获取子计数

我正在使用Nhibernate 3.0并需要在网站上实现分页.基本上我们有一个ProductCategory,它有一个与之关联的产品集合.到目前为止,我有这个确实有效

var result = Session.QueryOver<TEntity>().TransformUsing(Transformers.DistinctRootEntity)
            .Where(category => category.CategoryId == criteria.CategoryId)
            .Fetch(category => category.Products).Eager
            .Take(pageSize)
            .Skip((pageIndex - 1)*pageSize)
            .Future<TEntity>();
Run Code Online (Sandbox Code Playgroud)

这将返回我正在请求的类别,并根据传入的页面大小和页面索引正确分页子产品.

我现在想要做的实际上是获得产品的总行数,例如,即使我只返回5个产品,我需要知道总共有100个.

非常感谢

c# nhibernate pagination queryover

1
推荐指数
1
解决办法
2281
查看次数

NHibernate - 使用QueryOver选择多个列的最简洁方法

使用Linq,您可以轻松完成:

from c in session.Query<Site>()
       select new {c.SiteName, c.SiteId, 
                   c.Network, c.RegionLocation.City, 
                   c.RegionLocation.Region.RegionName};
Run Code Online (Sandbox Code Playgroud)

有没有办法做这样的事情QueryOver?看起来你可以做到这一点,SelectList但这似乎不像linq方法那么干净.有更干净的方式吗?

c# nhibernate queryover

1
推荐指数
1
解决办法
2328
查看次数

如何使用Nhibernate QueryOver调用Oracle的regexp_like函数?

我知道我需要使用Restrictions.Eq和Projections.SqlFunction,但我已经尝试了几个小时没有任何成功(我的测试应用程序只是崩溃).有没有人有一个QueryOver示例,可以在Oracle中执行以下操作:

SELECT
  *
FROM
  V_LOG_ENTRIES
WHERE
  regexp_like(ENTRY_TEXT, '(\WPlaced\W)');
Run Code Online (Sandbox Code Playgroud)

更新:好的,我认为部分问题是Restrictions.Eq期望相等,但在这种情况下没有相等,它只是WHERE子句中的函数调用...

regex sql nhibernate function queryover

1
推荐指数
1
解决办法
389
查看次数

与IQueryOver连接时的Nhibernate条件

我在谷歌和stackoverflow上搜索类似的问题将近2个小时,但没有找到任何解决方案.

我有2个表,关系1对多.

1) [Accounts]
PK Account_Id
int User_ID


2) [Temporary_Accounts]
Fk Account_Id
char IsAccepted   {'1','0',null}
varchar name
Run Code Online (Sandbox Code Playgroud)

和2个映射类

1) Acc
int Id;
User user;
TempAcc Temp; //cause each Account can have 0 or one TempAcc (with IsAccepted == null)

2)TempAcc
int Id;
bool IsAccepted;
string name;
Run Code Online (Sandbox Code Playgroud)

我想显示给定user_id的所有帐户以及在[Temporary_Accounts]和IsAccepted == null中有记录的Accounts的附加信息(fe name).

所以SQL应该是这样的:

select acc.Account_Id, acc.User_Id, tempacc.Name 

from Account acc left join Temporary_Account tempacc 
on (acc.Account_ID = tempacc.Account_Id and tempacc.IsAccepted is null)
where (acc.User_Id = 65);
Run Code Online (Sandbox Code Playgroud)

但我的IQueryOverquery:

IQueryOver<Acc> query = (...)
query.JoinAlias(f …
Run Code Online (Sandbox Code Playgroud)

nhibernate criteria subquery icriteria queryover

0
推荐指数
1
解决办法
3292
查看次数

HQL和Session.Query忽略映射中定义的急切提取

当我使用HQL或Linq(Session.Query)获取内容时,我有一个NHibernate没有使用我的映射配置来急切加载集合的问题.Session.Get和Session.QueryOver正如预期的那样工作.

我正在使用NHibernate 3.2.这是我的产品映射中集合的映射.

<bag name="OrderItems" inverse="true" cascade="none" lazy="false" fetch="join">
  <key column="order_id" />
  <one-to-many class="OrderItem" />
</bag>
Run Code Online (Sandbox Code Playgroud)

从另一边看,映射看起来像这样:

<many-to-one name="Product" class="Product" column="product_id" not-null="true" />
Run Code Online (Sandbox Code Playgroud)

我有4个测试,2个是成功的,2个不是.他们使用Session.SessionFactory.Statistics来跟踪CollectionFetchCount(在1个连接查询中或在单独的查询中选择了OrderItem).目的是在选择产品时选择并加载OrderItem,因为几乎总是访问OrderItems.

LastCreated是对插入数据库的最后一个产品的简单引用.

[Test] /* Success */
public void Accessing_Collection_Using_Session_Get_Results_In_1_Select()
{

    // Get by Id
    var product = Session.Get<Product>(LastCreated.Id);
    var count = product.OrderItems.Count;
    Assert.AreEqual(0,statistics.CollectionFetchCount,"Product collectionfetchcount using Get");
}


[Test] /* Success */
public void Accessing_Collection_Using_Session_QueryOver_Results_In_1_Select()
{

    // Get by Id
    var product = Session.QueryOver<Product>().SingleOrDefault();
    var count = product.OrderItems.Count;
    Assert.AreEqual(0, statistics.CollectionFetchCount, "Product collectionfetchcount using QueryOver");
}
Run Code Online (Sandbox Code Playgroud)
[Test] /* Fail …
Run Code Online (Sandbox Code Playgroud)

linq nhibernate hql eager-loading queryover

0
推荐指数
1
解决办法
669
查看次数

Nhibernate中的SelectList和Projection有什么区别?

如标题所示。

(在我看来,这SelectList是一种无需使用该Projections方法即可创建投影的方法。)

nhibernate queryover

0
推荐指数
1
解决办法
1952
查看次数