首页 > 解决方案 > SQL Server - EF Core - 自定义约束,其中针对 id 的所有标志都必须为假,除了一个

问题描述

我有一个首先通过 ef 核心代码生成的表,并且需要分配一个约束,其中具有特定主键 id 的记录中的所有标志都必须为假,除了一个必须为真的标志,因此它将始终有一条记录标志设置为真。

例如在下图中,我希望只有一个项目的 isAccountHolder 为 true,如果表中只有一条记录,则必须将 isAccountHolder 设置为 true。

我想知道这是否可以使用代码优先方法来完成。我尝试了以下方法,但似乎不起作用。

    builder
        .HasIndex(p => new {p.AccountHolderCustomerId, p.IsAccountHolder})
        .HasFilter("[IsAccountHolder] = 1");

在此处输入图像描述

标签: sql-serverentity-framework-core

解决方案


我在这里找到了答案: 如何阻止 EF Core 在可为空的列上创建过滤索引

        builder
            .HasIndex(p => new {p.AccountHolderCustomerId, p.IsAccountHolder})
            .IsUnique()
            .HasFilter("[IsAccountHolder] = 1");

推荐阅读