Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как сопоставить перечисление в отношениях "один ко многим" с NHibernate?

Автор вопроса: x2boolОтветов: 2

У меня две отдельные таблицы.

[users]   [ roles ]
+-----+   +-------+
| id  |   |user_id|
+-----+   +-------+
          | value | <- [Represented by the enum]
          +-------+

И модели для них.

class User { int id; IList<Roles> Roles; }

enum Roles { Worker, Manager, Director }

Как видите, это просто "один ко многим". У пользователя много ролей. Как сопоставить эти модели в XML?

  • Операции с битовой маской могут решить эту проблему. Но в этом случае мне нужно изменить существующий API. x2bool 02.07.2013

nhibernatenhibernate-mapping

Ответы

Ответ 1 · renefc3

как твоя картография? вы пробовали что-то вроде этого:

 HasMany(x => x.Roles)
   .Cascade.All()
   .Table("UserRoles")
   .Element("RolesEnum");

Ответ 2 · Tony

Я знаю, что это старый вопрос, но наткнулся на него как на одну из первых ссылок при поиске ответа. Кажется, это для объекта User будет работать (с FluentNhibernate):

HasMany(x => x.Roles)
.Cascade.All()
.Table("roles")
.KeyColumn("user_id")
.Element("value", m => m.Type<EnumStringType<Roles>>());

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы