Синтаксис для определения Фильтра NHibernate с Быстрым Nhibernate?

Вы можете просто использовать функцию API окон FindWindow. В delphi имя класса окна совпадает с именем класса, вы можете переопределить имя класса, переопределив функцию CreateParams. Чтобы проверить, существует ли окно, добавьте код перед созданием главного окна, перед Application.Initialize;

Program test
var 
  handle :HWND;
begin
  handle := FindWindow('TMySuperApp', nil);

  if IsWindow(handle) then
  begin 
       //app is running
       exit;
  end.

  Application.Initialize;
  Application.CreateForm(TMySuperApp, SuperApp);
  Application.Run;
end;
21
задан Drevak 6 June 2009 в 21:49
поделиться

3 ответа

Этот недавний пост в обсуждении Fluent NHibernate заставляет меня думать, что фильтры еще не поддерживаются Fluent API.

6
ответ дан 29 November 2019 в 06:20
поделиться

На случай, если кто-то все еще это наблюдает, я только что отправил патч в код Google для Fluent NHibernate для поддержки фильтров. Вы можете увидеть, как это используется в ответе хихикера выше.

9
ответ дан 29 November 2019 в 06:20
поделиться

Если вы собираете Fluent из исходного кода, теперь есть поддержка фильтров. Вы используете их следующим образом:

Сначала создайте класс, унаследованный от FluentNHibernate.Mapping.FilterDefinition :

using FluentNHibernate.Mapping;

namespace PonyApp.FluentFilters
{
    public class PonyConditionFilter : FilterDefinition
    {
        public PonyConditionFilter()
        {
            WithName("PonyConditionFilter")
                .AddParameter("condition",NHibernate.NHibernateUtil.String);
        }
    }
}

В своей ClassMap для вашего класса используйте метод ApplyFilter:

namespace PonyApp.Entities.Mappings
{
    public class PonyMap : ClassMap<Pony>
    {
        public PonyMap()
        {
            Id(x => x.Id);
            Map(x => x.PonyName);
            Map(x => x.PonyColor);
            Map(x => x.PonyCondition);
            ApplyFilter<PonyConditionFilter>("PonyCondition = :condition");
        }
    }
}

Затем добавьте фильтр к ваша свободная конфигурация:

Fluently.Configure()
    .Mappings(m => m.FluentMappings.Add(typeof(PonyConditionFilter)))
    //blah blah bunches of other important stuff left out
    .BuildSessionFactory();

Затем вы можете включать и выключать его, как в обычном NHibernate:

session.EnableFilter("PonyConditionFilter").SetParameter("condition","Wonderful");
60
ответ дан 29 November 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: