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

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

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

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

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

enum Roles { Worker, Manager, Director }

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


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


Ответы (2)


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

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

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

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