У меня есть сценарий, где мне нужно определить две многоколончатыми уникальные ограничения, как так:Несколько UniqueKeys в Fluent NHibernate
public class UserMap : IAutoMappingOverride<User>
{
public void Override(AutoMapping<User> mapping)
{
mapping.Map(x => x.UserName)
.UniqueKey("UQ_User_UserName_Client");
mapping.Map(x => x.LoweredEmail)
.UniqueKey("UQ_User_Email_Client");
mapping.References(x => x.Client)
.UniqueKey("UQ_User_UserName_Client")
.UniqueKey("UQ_User_Email_Client");
}
}
Причина для этого мне нужно как UserName и e-mail, чтобы быть уникальным каждый клиент. Полученный SQL выглядит следующим образом:
create table Users (
Id UNIQUEIDENTIFIER not null,
UserName NVARCHAR(256) not null,
LoweredEmail NVARCHAR(256) not null,
Email NVARCHAR(256) not null,
ClientId UNIQUEIDENTIFIER null,
primary key (Id),
unique (UserName),
unique (LoweredEmail, ClientId)
)
Это не желаемый эффект. Как создать следующий SQL-файл?
create table Users (
Id UNIQUEIDENTIFIER not null,
UserName NVARCHAR(256) not null,
LoweredEmail NVARCHAR(256) not null,
Email NVARCHAR(256) not null,
ClientId UNIQUEIDENTIFIER null,
primary key (Id),
unique (UserName, ClientId),
unique (LoweredEmail, ClientId)
)
Я не уверен, что это проблема/ограничение с помощью Fluent или NHibernate. Любая помощь будет оценена по достоинству.