powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / FluentNHibernate не работает CustomPropertyConvention
2 сообщений из 2, страница 1 из 1
FluentNHibernate не работает CustomPropertyConvention
    #38155550
SergSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу свой PropertyConvention для FluentNHibernate

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
public class IdFieldConversion : IPropertyConvention, IPropertyConventionAcceptance
    {
        public void Apply(IPropertyInstance instance)
        {
            instance.Column( string.Format("{0}ID", instance.EntityType.Name) );
        }

        public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
        {
            criteria.Expect(inspector => inspector.Property.Name == "Id");
        }
    }

/// регистрирую так...
Fluently.Configure(config)
                .Database(
                    FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2008.ConnectionString(
                        ConnectionString.GetConnectionString()))
                .Mappings(m => 
                        m.AutoMappings.Add(
                                new AutoPersistenceModel()
                                    .AddMappingsFromAssemblyOf<FluentNhibernateLocalSessionFactoryObject>()
                                    .Conventions.Add<IdFieldConversion>()
....
                            )
                    )
                .BuildSessionFactory();



Не работает, в том смысле что инстанс IdFieldConversion создается(делал конструктор на который вешал бряку), но для маппинга не применяется, т.е. не происходит вызовов ни Accept, ни Apply.
В результате при генерации SQL разумеется неверные имена филдов таблицы.

Как быть?

ЗЫ Пробовал руками имена в мапинге прописывать, тогда работает, но это жутко не удобно т.к. практически все поля придётся переименовывать.
...
Рейтинг: 0 / 0
FluentNHibernate не работает CustomPropertyConvention
    #38156434
SergSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил проблему.
1. Помогло полная очистка проекта и пересборка (без этого вообще в методы заходить не хотел).
2. Дело было в том что я пробовал использовать IPropertyConvention для модификации мапинга первичного ключа, полагая что он является филдом. Оказывается в мапинге FluentNHibernate ПК не считается филдом, и соответственно фильтр для него никогда не был бы применен.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / FluentNHibernate не работает CustomPropertyConvention
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]