【发布时间】:2019-06-24 07:54:39
【问题描述】:
我有这个模型
public class Record
{
public int Id {get;set;}
public int Client {get;set;}
public bool IsActive {get;set;}
}
我想为 IsActive 列创建一个约束。
每个客户端只能激活 1 条记录。
如何在模型上实现这一点?
【问题讨论】:
-
您可以通过在
Client和IsActive列上创建唯一索引来实现此目的 -
哦,我明白了。基本上,这意味着如果在 isActive 上有一个客户端为 true,它就不能再次插入它。但这不是对 false 做同样的事情吗?因为前面的都是假的。客户端记录完成更新后,将其设置为 false,以便客户端下次登录时可以开始新记录
-
您需要查看过滤后的索引。 EF这里不能给你提供简单的方法,但是你可以看看this question
-
类似
CREATE UNIQUE NONCLUSTERED INDEX ... WHERE ([IsActive]=(1)) -
我明白了,很遗憾,这还不支持。
标签: c# asp.net-core entity-framework-core