Я думал, что выложу код, который выбрал для своего решения. Это всего лишь обходной путь. Я бы хотел, чтобы Fluent поддерживал списки Enum, но пока это не так, вот возможное решение:
Enum - это мое перечисление, ваше стандартное перечисление.
public enum PermissionCode
{
//site permissions 1-99
ViewUser = 1,
AddUser = 2,
EditUser = 3,
DeleteUser = 4
}
Далее, у меня есть класс разрешений.
public class Permission
{
public virtual int PermissionId { get; set; }
public virtual string PermissionName { get; set; }
public virtual PermissionCode PermissionCode
{
get
{
return (PermissionCode)PermissionId;
}
}
}
Как видите, у меня есть идентификатор и имя, а затем свойство, которое преобразует идентификатор в мое перечисление PermissionCode.
Отображение выглядит так:
public class PermissionMap : ClassMap<Permission>
{
public PermissionMap()
{
WithTable("Permissions");
Id(x => x.PermissionId).GeneratedBy.Identity();
Map(x => x.PermissionName);
}
}
Поскольку свойство PermissionCode является производным, мы ничего не делаем в отображении.
Структура My Table за отображением выглядит следующим образом:
CREATE TABLE dbo.Permissions
(
PermissionId int NOT NULL,
PermissionName varchar (50) NOT NULL,
CONSTRAINT PK_Permissions PRIMARY KEY CLUSTERED (PermissionId)
)
Если вы хотите использовать имя вместо целочисленного значения, вы можете внести некоторые небольшие изменения. Это зависит от ваших личных предпочтений.