powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Зачем нужны CamelCase field?
22 сообщений из 22, страница 1 из 1
Зачем нужны CamelCase field?
    #36827731
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, вообще-то я думал, что понимаю, зачем они нужны. Поэтому и не применял у себя
(ранее вычитал рекомендации по нотации ОРМ не_помню_от_кого и они мне понравились - именовать поля персистентных классов, в точности, как поля БД).
Но над одним маппингом бился до умозамрачения (много-ко-многим), пока не вставил код одного из примеров без изменений.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
            HasManyToMany(x => x.Tasks)
                             .Access.CamelCaseField()
                             .Cascade.SaveUpdate()
                             .AsSet()
                             .ParentKeyColumn("DOC_ID")
                             .ChildKeyColumn("TASK_ID")
                             .Table("ATTACHMENTS");

Why-y-y-y-й??!!!
Pourquois??!!!
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36827786
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Флюент зло.
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36827797
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Я могу, конечно, потибидохаться и написать тестовый пример на xbm, но на 90% уверен, что будет то же самое.
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36827889
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдльпотибидохаться
Много-ко-многим? Упал со стула

Организация связи many-to-many
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36827907
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ-й,
Вы- мозгоклюй!
Я не хотел обидеть апологетов xbm, а имел в виду, что мне лень тибидохаться с созданием тестового проекта.
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36827965
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльМСУ-й, Вы- мозгоклюй!
Хуже

КурдльЯ не хотел обидеть апологетов xbm, а имел в виду, что мне лень тибидохаться с созданием тестового проекта.
То есть, Вы обычно создаёте "тестовый" проект на флюенсе, потом позже переводите проект в стадию "commerce", а флюенс прибиваете нах и прикручиваете hbm? )
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36828253
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
То есть, Вы обычно создаёте "тестовый" проект на флюенсе, потом позже переводите проект в стадию "commerce", а флюенс прибиваете нах и прикручиваете hbm? )

Чего-й-та?
Создаю тестовый (пробный) проект на том, что хочу протестировать (опробовать). Потом выбрасываю.
А текущий проект на флюенте.
Мне не угнаться за полетом Вашей мысли...
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36828316
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забейте, настроение просто хорошее, разговорчивое )
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36828677
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял суть проблемы, но про стратегии доступа исчерпывающе написано в документации .
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36828870
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorНе понял суть проблемы, но про стратегии доступа исчерпывающе написано в документации .

СПАСИБО!
Суть проблемы: я нигде в проекте не использую CamelCase-Underscore преобразование, именую поля персистентных классов в полном соответствии с полями сущностей БД (напр "DOC_ID" -> Document.DOC_ID).
Однако Nhibernate потребовал в маппинге указать ".Access.CamelCaseField()"
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36828918
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

NHibernate ничего не требует, он предлагает варианты, как добираться до поля. Боюсь, вы не так вкурили ошибку (или что там у вас стряслось).
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36828955
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorКурдль,

NHibernate ничего не требует, он предлагает варианты, как добираться до поля. Боюсь, вы не так вкурили ошибку (или что там у вас стряслось).

См. пост №1.
Если убрать помеченную красным строчку кода, при старте приложения вываливается ошибка:
NHibernate.PropertyNotFoundException: Could not find a setter for property 'Tasks' in class 'Documents'
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36828972
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

так разве вот это не слишком доходчиво звучит?
авторCould not find a setter for property 'Tasks' in class 'Documents'

Код свойства Tasks в студию.
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36829148
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorКурдль,

так разве вот это не слишком доходчиво звучит?

Код свойства Tasks в студию.

Я не все понял точно, но кажется там было что-то про собаку породы сеттер.
Код: plaintext
public virtual ReadOnlyCollection<Document> Documents { get { return new ReadOnlyCollection<Document>(new List<Document>(documents)); } }
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36830996
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жёсткий код, однако...
А попроще нельзя было?

Код: plaintext
1.
public virtual IList<Document> Documents { get { return new List<Document>(documents).AsReadOnly(); }} 

Конкретные реализации коллекций считаются не комильфо, интерфейсы рулят и всё такое.
NH подменяет IList своей реализацией. Посему ему нужен доступ к этому полю, а в вашем случае его нет. Потому и нужно указывать доступ на уровне поля.
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36832149
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

Да, скорее всего так, как Вы сказали - я и сам об этом думал.
Код: plaintext
1.
2.
3.
4.
5.
6.
        public TaskMapper()
        {
            Table("TASKS");
            Id(x => x.ID_TASK).GeneratedBy.Native("ID_TASK");
...
        }
Думаю, что для надежности надо сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
        public TaskMapper()
        {
            Table("TASKS");
            Id(x => x.ID_TASK).Column("ID_TASK").GeneratedBy.Native("ID_TASK");
...
        }
Хитрые дядьки, что делали эту БД, специально старались запутать потомков, например, называя последовательности именами зависимых полей и мн.др...
В общем, добавлю четкие указания на поля и попробую убрать CamelCase, как время выдастся.
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36833351
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

Я не поленился перелопатить весь проект и всем идентификаторам сущностей в маппинге явно указать соответственные поля БД(ранее только они были обделены полным вниманием маппинга). Таким образом в моей модели нет ни одного не замапленного явно поля.
ОДНАКО! Опять, как только я удаляю в единственном месте ".Access.CamelCaseField()" - Nhibernate отказывается стартовать.
В общем-то программа работает, но меня немножечко удручает непонимание происходящего.
Может быть так происходит из-за того, что не замапленными явно остаются ассоциативные таблицы, поддерживающие связь много-ко-многим?..
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36833451
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

Еще раз: хиберу нужно писать и читать значения свойств. Чтобы записывать и читать у свойств должен быть и getter и setter. Хоть приватные, но быть должны! Если хотя бы одного из них нет - то нужно указывать способ доступа к подлежащему полю ( в т.ч. стратегию именования).
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36833479
barser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КурдльSolYUtorКурдль,

так разве вот это не слишком доходчиво звучит?

Код свойства Tasks в студию.

Я не все понял точно, но кажется там было что-то про собаку породы сеттер.
Код: plaintext
public virtual ReadOnlyCollection<Document> Documents { get { return new ReadOnlyCollection<Document>(new List<Document>(documents)); } }


Насколько я понимаю, такого рода код относится к тому, что авторы fluent'a называют 'non-standard design'. А следовательно для мэппинга необходимо использовать свойство Access().
А почему не подходит что-нить вроде
Код: plaintext
public virtual ICollection<Document> Documents { get; protected set}
??
Вот из фака
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36833483
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

Спасибо за подробное объяснение! Со второго раза до меня начало доходить.
Хоть пока не понятно, причем CamelCase, если у меня везде в чистом виде Underscore. Но больше тратить свое и чужое время на проблему, которая не мешает жить, не буду.
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36833493
barser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КурдльSolYUtor,

Спасибо за подробное объяснение! Со второго раза до меня начало доходить.
Хоть пока не понятно, причем CamelCase, если у меня везде в чистом виде Underscore. Но больше тратить свое и чужое время на проблему, которая не мешает жить, не буду.

если бы у тебя было _documents, то нужно было бы писать Access.CamelCaseField(Prefix.Underscore)... легко проверить....
...
Рейтинг: 0 / 0
Зачем нужны CamelCase field?
    #36833507
barser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КурдльSolYUtor,

Хоть пока не понятно, причем CamelCase, если у меня везде в чистом виде Underscore.


Для свойства Documents у тебя backing field - documents, а это - camelCase... где тут underscore???
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Зачем нужны CamelCase field?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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