标签: nhibernate-criteria

NHibernate标准限制与表达

如果我在Internet中搜索NHibernate Criteria API查询示例,则会有使用限制的示例,而其他示例则使用Expression.这两者有什么不同?

例如:

posts = session.CreateCriteria<Post>()
    .Add(Expression.Eq("Id", 1))
    .List<Post>();

posts = session.CreateCriteria<Post>()
    .Add(Restrictions.Eq("Id", 1))
    .List<Post>();
Run Code Online (Sandbox Code Playgroud)

nhibernate nhibernate-criteria

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

NHibernate - 查询中的错误列

我在NHibernate中遇到了一个间歇性问题,它为实体生成一个查询,但用一个完全不同(和不相关)实体的列替换其中一个列.

它只替换单个列,通常通过重新启动应用程序来解决(尽管有时需要几次尝试).

  • ASP.NET应用程序(.NET 4.0)
  • 在Application_Start期间创建的SessionFactory
  • NHibernate 3.3.1-通过代码映射完成的所有映射/配置
  • 使用Nhibernate标准

对此的任何意见将非常感谢!

实体

public class LiquiditySourceItem : RunDataEntity, IEntity<int>
    {
        public virtual int Id { get; protected internal set; }
        public virtual int IdentID { get; protected internal set; }
        public virtual string Portfolio { get; protected internal set; }
        public virtual string ProfitCentre { get; protected internal set; }
        public virtual DateTime? MaturityDate { get; protected internal set; }
        public virtual string Curr1 { get; protected internal set; }
        public virtual string …
Run Code Online (Sandbox Code Playgroud)

sql nhibernate nhibernate-mapping nhibernate-criteria

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

NHibernate - 使用Criteria API对整数列进行LIKE搜索的最简单方法?

我正在尝试对整数列进行搜索,我需要做的是实际将列转换为varchar然后执行类似搜索.这可能吗?使用Criteria API最简单的方法是什么?

var search = "123";
criteria.Add(Restrictions.Like("Number", "%" + search + "%"))
Run Code Online (Sandbox Code Playgroud)

nhibernate nhibernate-criteria

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

查询nHibernate,其中今天的日期介于publishDate和Expiry日期之间

我试图弄清楚如何在NHibernate中进行最佳查询,以便返回结果介于今天时间> = PublishDateTime和<= ExpiryDateTime的条目之间

到期日可以为空,所以我需要允许.我在这里这里找到了几个例子,但它们似乎以不同的方式工作并接受2个值并与一个DB字段进行比较.我真的想要别的方法.

查询到目前为止:

var query = _session.CreateCriteria<Message>()
                .AddOrder(Order.Desc("PublishedDateTime"))
                .List<Message>();
                return query;
Run Code Online (Sandbox Code Playgroud)

任何建议都会受到极大的欢迎!

nhibernate date date-range nhibernate-criteria

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

用NHibernate查询

我是NHibernate的新手,我正在尝试学习如何查询我的数据.

下面是配置xml.仅显示配方.

我希望能够通过来自输入的关键字的recipetitle以及来自ingredientname的成分来查询食谱.

所以你可以输入"面食酒".

这是我尝试过但却给我一个错误.

    hql = "from Recipe r " +
    "left join r.Images " +
    "inner join r.User " +
    "inner join r.Ingredients i " +
    "where i.IngredientName Like '%pasta%' OR i.IngredientName Like '%wine%' OR r.RecipeTitle Like '%pasta' OR r.RecipeTitle Like '%wine%'";
Run Code Online (Sandbox Code Playgroud)

我也想加载收藏品.

我要去查询吗?我需要能够根据我的搜索条件构建查询字符串.这在SQL中很容易形成.

马尔科姆

  <class name="Recipe" table="Recipes" xmlns="urn:nhibernate-mapping-2.2">
    <id name="RecipeID" type="Int32" column="RecipeID">
      <generator class="identity" />
    </id>
    <property name="RecipeTitle" type="String">
      <column name="RecipeTitle" />
    </property>
    <property name="Completed" type="Boolean">
      <column name="Completed" />
    </property>
    <property name="ModifiedOn" type="DateTime">
      <column name="ModifiedOn" />
    </property> …
Run Code Online (Sandbox Code Playgroud)

nhibernate hql nhibernate-criteria

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

QueryOver语句,用于选择具有降序DateTime顺序的N行

我正在尝试编写QueryOver语句,以按降序时间顺序选择N行.

session.QueryOver<T>().Take(10).OrderBy(x=>x.DateInserted);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这根本不起作用.有什么方法可以解决它吗?

nhibernate linq-to-nhibernate nhibernate-criteria queryover

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

Nhibernate QueryOver.OrderBy使用字符串属性名称.

我重构旧式查询CreateCriteria()QueryOver().我的Wcf服务获取string PropertyName订单查询结果.对于IQueryable我使用动态LINQ做这样的排序,为CreateCriteria()- AddOrder().

IList<object[]> result =
            GetSession()
                .QueryOver(() => activity)
                .JoinAlias(() => activity.ActivityLicense, () => license)
                .Select(Projections.ProjectionList()
                            .Add(Projections.Count<Activity>(e => e.Id), "ActivityCount")
                            .Add(Projections.Group(() => license.SerialNumber), "SerialNumber")
                            .Add(Projections.Count<Activity>(e => e.MacAdress), "MacAddressCount")
                            .Add(Projections.Count<Activity>(e => e.IpAdress), "IpAddressCount")
                )
                .OrderByAlias("ActivityCount") // Compilation Error - I need such extension method
                .List<object[]>();
Run Code Online (Sandbox Code Playgroud)

有关字符串属性名称如何排序的任何建议?

PS:我无法使用LINQ到Nhibernate:LINQ to NHibernate - .GroupBy().Skip().Take()导致异常

谢谢!

nhibernate nhibernate-criteria queryover

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

对嵌套嵌套属性的Nhibernate Projection

我有域类位置

    public abstract class BaseEntity<T> where T: struct 
    {
    public virtual T Id { get; set; }
    public virtual bool Equals(BaseEntity<T> other)
    }

    public class Location : BaseEntity<Int32>
    {

    public  User User {get;set;}
    }

    public class User : BaseEntity<Int32>
    {
    public string Name {get;set;
    }

    public OtherInfo Otherinfo {get;set;};
     }
    public class OtherInfo
    {
    public  string preference {get;set;};
    }

    var criteria = session.CreateCriteria(typeof(Location), "alias");
    criteria.CreateCriteria("User", "user", JoinType.InnerJoin);
    criteria.CreateCriteria("user.Otherinfo", "userInfo",JoinType.InnerJoin); 
    criteria.Add(Restrictions.Eq("user.Id", 100));
    criteria.SetProjection(Projections.Alias(Projections.Id(), "Id"),                            Projections.Alias(Projections.Property("user.Name"), "Name"),  Projections.Alias(Projections.Property("userInfo.preference "), "pref"));
Run Code Online (Sandbox Code Playgroud)

现在,当我执行上述条件时,它会在userInfo.preference上出错.{NHibernate.QueryException:无法解析属性:Otherinfo of:Location.User这里有什么错误.是因为多个嵌套对象

nhibernate nhibernate-criteria

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

如何使用NHibernate ICriteria API表达此LINQ查询?

我目前的项目是使用NHibernate 3.0b1和NHibernate.Linq.Query<T>()API.我对LINQ非常流利,但我对HQL或ICriteria API没有任何经验.IQueryable API不支持我的一个查询,因此我认为我需要使用以前的API之一 - 但我不知道从哪里开始.

我已经尝试在网上搜索ICriteria的一个很好的"入门"指南,但我发现的唯一例子要么太简单了,要么在这里申请,要么太高级我无法理解.如果有人有一些好的学习材料可以传递,我们将不胜感激.

在任何情况下,我要查询的对象模型看起来像这样(大大简化,省略了非相关属性):

class Ticket {
    IEnumerable<TicketAction> Actions { get; set; }
}
abstract class TicketAction {
    Person TakenBy { get; set; }
    DateTime Timestamp { get; set; }
}
class CreateAction : TicketAction {}
class Person {
    string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

A Ticket有一个TicketAction描述其历史的集合.TicketAction亚型包括CreateAction,ReassignAction,CloseAction等所有的门票已经一CreateAction创建时添加到此集合.

此LINQ查询正在搜索具有给定名称的人创建的票证.

var createdByName = "john".ToUpper();
var tickets = _session.Query<Ticket>()
    .Where(t => t.Actions
        .OfType<CreateAction>() …
Run Code Online (Sandbox Code Playgroud)

nhibernate linq-to-nhibernate nhibernate-criteria

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

NHibernate QueryOver 按字符串长度限制

如何通过字符串属性的长度限制查询?例如。就像是:

NHSession.QueryOver<Customer>()
    .Where(p => p.RegistryCode.Length == 8)
Run Code Online (Sandbox Code Playgroud)

nhibernate nhibernate-criteria queryover

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