У меня есть база данных, которую я пытаюсь смоделировать с помощью Fluent NHibernate.
таблицы в вопросах:
Пользователь: PK Id, Имя, FK accessType, FK авторизация
AccessType: PK Id, Имя
Авторизация: PK Id, Имя
Разрешение: PK Id, FK menuId, FK accessId, FK authId
Пользовательский объект:
public Users()
{
Permissions = new List<Permissions>();
}
public virtual AccessTypes AccessType { get; set; }
public virtual Authorization Authorization { get; set; }
public virtual string Name { get; set; }
public virtual IList<Permissions> Permissions { get; set; }
Права доступа:
public class Permissions : EntityWithTypedId<long>
{
public virtual Menus Menu { get; set; }
public virtual AccessTypes AccessType { get; set; }
public virtual Authorization Authorization { get; set; }
}
Карта пользователя:
public UsersMap()
{
Table("USERS");
Map(x => x.Name, "NAME");
References<AccessTypes>(x => x.AccessType, "ACCESS_TYPE_ID");
References<Authorization>(x => x.Authorization, "AUTHORIZATION_ID");
Id(x => x.Id, "ID")
.Column("ID")
.GeneratedBy.Assigned();
HasMany<Permissions>(x => x.Permissions)
.KeyColumns.Add("ACCESS_TYPE_ID", "AUTHORIZATION_ID")
.Inverse()
.Cascade.None();
}
Карта разрешений:
public PermissionsMap()
{
ReadOnly();
Table("PERMISSIONS");
References<Menus>(x => x.Menu, "MENU_ID");
References<AccessTypes>(x => x.AccessType, "ACCESS_TYPE_ID");
References<Authorization>(x => x.Authorization, "AUTHORIZATION_ID");
Id(x => x.Id, "ID")
.Column("ID")
.GeneratedBy.Assigned();
}
Я получил эту ошибку:Внешний ключ (FK79B2A3E83BA4D9E3: PERMISSIONS [ACCESS_TYPE_ID, AUTHORIZATION_ID])) должен иметь то же количество столбцов, что и ссылочный первичный ключ (USERS [ID])
Мне нужно получить список разрешений, проверив userType доступа иавторизация пользователя.Мой вопрос: Как я могу сопоставить список разрешений в сопоставлении пользователей?Должен ли я использовать троичное объединение?
Кто-нибудь знает, как это сделать?