关于这个问题:Does EF Core allow a unique column to contain multiple nulls?
我希望每个值都是唯一的,甚至是null。
config.Entity<Product>()
.HasIndex(b => b.ProductId)
.IsUnique();
SQL中的等效项
[ProductId] int null unique foreign key references Product([Id])
我可以修改此代码以防止列上出现多个空值吗?
答案 0 :(得分:9)
默认情况下,EF Core的Fluent API会添加
namespace detail {
template<class> class type {};
template<template<class...> class Temp, class...Ts>
void try_deduce(type<Temp<Ts...>>);
}
template <template <class...> class, class, class = void>
struct IsSpecialization : std::false_type {};
template <template <typename...> class Temp, class Specialization>
struct IsSpecialization<Temp, Specialization,
decltype(detail::try_deduce<Temp>(detail::type<Specialization>()))>
: std::true_type {};
static_assert(IsSpecialization<SequenceExpr, SequenceExpr<int>>()());
static_assert(IsSpecialization<Expr, SequenceExpr<int>>()());
static_assert(!IsSpecialization<MergeExpr, SequenceExpr<int>>()());
static_assert(!IsSpecialization<SequenceExpr, MergeExpr<int>>()());
到迁移中创建的索引。
为了确保偶数NULL是唯一的,我们必须修改索引,如下所示:
filter: "[ProductId] IS NOT NULL"
这将删除过滤器,并允许NULL是唯一的。