为EFCore中的“true”创建唯一约束我有一个跟踪附件的课程。每条记录可以有多个RecordAttachment,但要求每条记录只有一个标记为IsPrimaryRecordAttachment。公共类RecordAttachment{publicintId{get;放;}publicintRecordId{得到;放;}公共字符串详细信息{得到;放;}publicboolIsPrimary{得到;放;我不能只使用.HasIndex(e=>new{e.RecordId,e.IsPrimary}).IsUnique(true)因为每个Record可能有多个false值。基本上我需要一个唯一约束,其中RecordId和IsPrimary==true,虽然这不起作用:entity.HasIndex(e=>new{e.RecordId,IsPrimary=(e.IsPrimary==true)}).IsUnique(true)编辑:看看这个答案:Uniqueconstraintonbitcolumnonlyallows1true(1)value看起来这可能可以直接用SQL创建约束,但是它不会反映在我的模型中。您可以使用HasFilterfluentAPI指定索引过滤器。不幸的是,它与数据库无关,因此您必须使用目标数据库SQL语法和实际的表列名称。对于SqlServer,它将是这样的:.HasIndex(e=>new{e.RecordId,e.IsPrimary}).IsUnique().HasFilter("[IsPrimary]=1");有关详细信息,请参阅关系数据库建模–索引文档主题。以上就是C#学习教程:在EFCore中只为“true”创建唯一约束的所有内容分享,如果对大家有用还需要详细了解C#学习教程,希望大家多多关注it-本文来自网络合集,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
