Свободный NHibernate - Карта только несколько классов в сборке - PullRequest
1 голос
/ 19 апреля 2010

У меня есть проект сущности, который содержит около 30 классов, и этот проект используется в нескольких веб-приложениях. Одно приложение может использовать все 30 классов, а другое - только 3 класса. Итак, мой вопрос: Как я могу добавить только те классы, которые нужны уникальному приложению? Моей первой мыслью было добавить имена необходимых классов в настройках приложения в web.config, например:

<add key="MappingClasses" value="User,Application,News" />

А затем разбить и зациклить в конфигурации фабрики сеансов. Но мне бы очень хотелось, чтобы вы внесли свой вклад в это! Каков наилучший подход для достижения этой цели?

1 Ответ

0 голосов
/ 10 июня 2010

Вы можете указать своему AutoPersistenceModelGenerator фильтровать классы по некоторым критериям.

eq

    /// <summary>
    /// Provides a filter for only including types which inherit from the IEntityWithTypedId interface.
    /// </summary>
    private bool GetAutoMappingFilter(Type t)
    {
        return t.GetInterfaces().Any(x =>
                                     x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IEntityWithTypedId<>));
    }

Так что теперь вы можете читать файл конфигурации и использовать отражение для создания критериев фильтрации.

...