В вопросе Mapping to an Enum bit flag in Nhibernate принятый ответ предлагает просто использовать целое поле для хранения битовой маски типа перечисления. Хотя это, безусловно, работает, я бы предпочел не использовать этот подход, потому что он запутывает информацию в базе данных.Сопоставление битового поля (FlagsAttribute) с несколькими столбцами с использованием NHibernate?
Скажем, у меня есть это перечисление:
[Flags]
public enum Status
{
None = 0,
Foo = 1,
Bar = 2,
Baz = 4
}
Я хотел бы использовать следующую схему для его представления:
CREATE TABLE Widgets
(
Id int NOT NULL IDENTITY(1, 1) PRIMARY KEY,
Description nvarchar(100) NOT NULL,
-- Status fields start here
IsFoo bit NOT NULL,
IsBar bit NOT NULL,
IsBaz bit NOT NULL
)
Могу ли я сделать это с помощью NHibernate - желательно без большого некрасиво хаки? Если да, то как?
Если нет, существуют ли какие-либо альтернативы, которые поддерживают обнаружение данных, кроме определения каждой возможной комбинации флагов в таблице конфигурации?
(Примечание: Я бы предпочел решение Fluent NHibernate, но я, вероятно, может запутать через отображение XML.)
Почему вы отказались от типа композитного пользователя, упомянутого в статье, я бы подумал, что он удовлетворит ваши потребности. –
@Mike: Возможно, вы правы, и это может быть решение; для меня невозможно сказать, основываясь на этом ответе, который содержит только ссылку, которая выводит меня на страницу, посвященную совершенно другой проблеме. Если вы можете объяснить, как адаптировать этот подход к битовому полю, я с радостью принимаю такой ответ. – Aaronaught