我正在使用Fluent NHibernate
,我正在尝试创建一个具有唯一列的表,该列忽略空值。经过长时间的研究,我得出结论,唯一可行的方法是使用WHERE子句创建唯一索引,如:
CREATE UNIQUE NONCLUSTERED INDEX IX_MyIndex on MyTable (MyColumn)
WHERE MyColumn IS NOT NULL
现在我在需要时手动运行此脚本。有没有办法在Fluent
中映射列,以便自动检查?
我正在使用Sql Server 2012。
答案 0 :(得分:0)
您可以在mapping class
中提及唯一列:请查看以下示例
public class AccountsMap : ClassMap<Accounts>
{
public AccountsMap()
{
Id(x => x.Id).GeneratedBy.Increment();
Map(x => x.Username).Unique().Nullable(); //Here the username column is unique
Map(x => x.Password);
}
}
答案 1 :(得分:0)
如果我理解正确,您希望检查列是否唯一,除非它为null。如果为null,则可以多次出现null吗?
然后不,我找不到任何设置它的选项。
nhibernate中的模式生成根本不支持它!
Map(x => x.MyColumn).Unique().Nullable();
会为此列创建一个唯一索引,并且该列可以为空,但您不能插入多个具有空值的行...