На что ссылается «сущность» в беглой конфигурации Nhibernate Mapping? - PullRequest
3 голосов
/ 23 апреля 2010

Я пытаюсь лучше изучить беглый nhibernate, поэтому делаю базовый пример приложения с нуля, вместо того, чтобы использовать чей-то другой фреймворк. Однако я обнаружил, что действительно не понимаю, что происходит при назначении файлов сопоставления. Я видел много примеров кода, которые все показывают один и тот же код, но ничего не объясняет. Нет описания того, как это работает, просто это работает. Вот пример кода, который я часто вижу.

return Fluently.Configure()
            .Database(config)
            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Entity>())
            .BuildSessionFactory();

Итак, в примере кода, что такое Entity? и как этот кусок кода работает?

Часть меня думает, что это имя сборки, но, видя, что пространство имен, которое я использую, обычно является именем сборки, компилятор жалуется, что я использую пространство имен как тип.

Я чувствую, что это важно, и довольно взволнован фактом, что я не могу понять это.

Спасибо

Ответы [ 2 ]

2 голосов
/ 23 апреля 2010

Добавить из сборки добавляет все сопоставления в сборку, которой принадлежит тип Entity.AddFromAssembly будет делать что-то вроде:

typeof(TEntity).GetType().GetAssembly();

. Он получит сборку, к которой принадлежит Entity, и затем использует отражение, чтобы найти все ваши классы отображения.Вместо того, чтобы поверить мне на слово, почему бы не скачать исходный код и взглянуть на себя: O)

1 голос
/ 23 апреля 2010

s1mm0t ответил на ваш вопрос, но я просто немного его уточню ...

Во многих примерах FNH, которые вы видите, Entity - это простой базовый класс, который обычно просто содержит свойство Id, требуемое отображаемыми классами.

Все остальные классы, которые вы хотите отобразить, могут наследовать от Entity. Это позволяет вам выполнять такие действия, как изменение типа идентификатора с int на GUID в одном месте и т. Д.

Кстати, вы не единственный человек, который боролся со всей концепцией "плавной конфигурации" ...; -)

Здесь немного не по теме, но ...

Вопреки тому, что предлагают многие открытые исходники, мне некомфортно погружаться в огромную базу кода, которую я едва понимаю, когда мне нужен простой вопрос - по крайней мере, пока. Но я хочу вернуть что-то проекту FNH, от которого я так много выиграл. Итак, я пытаюсь обновить вики и другие документы, как только я понимаю, как что-то работает. Редактировать вики очень легко, и авторы FNH, похоже, это ценят.

Возможно, вы могли бы сделать что-то подобное?

...