Castle activerecord 如何使用Castle ActiveRecords FindOne()方法

Castle activerecord 如何使用Castle ActiveRecords FindOne()方法,castle-activerecord,Castle Activerecord,我有一个像这样的简单类 [ActiveRecord("Subscriptions")] public class Subscription : ActiveRecordBase<Subscription> { public Subscription() { } public Subscription(string name) { this.Name =

我有一个像这样的简单类

    [ActiveRecord("Subscriptions")]
    public class Subscription : ActiveRecordBase<Subscription>
    {
        public Subscription()
        {

        }

        public Subscription(string name)
        {
            this.Name = name;
        }

        [PrimaryKey(PrimaryKeyType.Native)]
        private int Id { get; set; }

        [Property]
        public string Name { get; set; }
}
[ActiveRecord(“订阅”)]
公共类订阅:ActiveRecordBase
{
公开认购()
{
}
公共订阅(字符串名称)
{
this.Name=Name;
}
[PrimaryKey(PrimaryKeyType.Native)]
私有int Id{get;set;}
[物业]
公共字符串名称{get;set;}
}
我想使用从基类继承的FindOne()方法进行简单的查找。它似乎使用了NHibernate.criteria.DetachedCriteria,但我找不到任何示例。

它不是很复杂:

Subscription.FindOne(NHibernate.Criterion.Expression.Eq("Id",3))
使用Expression类,您可以获得构建sql/hql/select所需的所有东西,只需一次又一次地嵌套它

Subscription.FindOne(Expression.And(Expression.Eq(...),Expression.Eq(...)))
问候 Juy Juka

它不是很复杂:

Subscription.FindOne(NHibernate.Criterion.Expression.Eq("Id",3))
使用Expression类,您可以获得构建sql/hql/select所需的所有东西,只需一次又一次地嵌套它

Subscription.FindOne(Expression.And(Expression.Eq(...),Expression.Eq(...)))
问候
Juy Juka

您也可以使用LINQ,我发现LINQ语法更具可读性:

// find the subscription with id = 3
var subscription = Castle.ActiveRecord.Framework.ActiveRecordLinqBase<Subscription>.Queryable.SingleOrDefault(s => s.Id == 3);

// find all the active subscriptions
var activeSubscriptions = ActiveRecordLinqBase<Subscription>.Queryable.Where(s => s.IsActive);

您也可以使用LINQ,我发现LINQ语法更具可读性:

// find the subscription with id = 3
var subscription = Castle.ActiveRecord.Framework.ActiveRecordLinqBase<Subscription>.Queryable.SingleOrDefault(s => s.Id == 3);

// find all the active subscriptions
var activeSubscriptions = ActiveRecordLinqBase<Subscription>.Queryable.Where(s => s.IsActive);