Как использовать метод Castle ActiveRecords FindOne () - PullRequest
0 голосов
/ 14 января 2012

У меня есть простой класс, подобный этому

    [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; }
}

И я хочу сделать простой поиск, используя метод FindOne (), унаследованный от базового класса.Похоже, что он использует NHibernate.Criterion.DetachedCriteria, но я не могу найти никаких примеров.

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Вы также можете использовать 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);

Если ваш класс наследует от ActiveRecordLinqBase, вы можете просто написать:

// find the subscription with id = 3
var subscription = Subscription.Queryable.SingleOrDefault(s => s.Id == 3);

// find all the active subscriptions
var activeSubscriptions = Subscription.Queryable.Where(s => s.IsActive);
1 голос
/ 15 января 2012

это не очень сложно:

Subscription.FindOne(NHibernate.Criterion.Expression.Eq("Id",3))

С классом Expression у вас есть все, что нужно для создания вашего sql / hql / select, вам просто нужно вкладывать его снова и снова.

Subscription.FindOne(Expression.And(Expression.Eq(...),Expression.Eq(...)))

Поздравления Juy Juka

...