【问题标题】:Unique and Non-Nullable using EF Core Fluent config使用 EF Core Fluent 配置唯一且不可为空
【发布时间】:2021-04-27 05:15:35
【问题描述】:

我应该如何使用 EF Core fluent 配置强制执行一个属性,即 不是 主键,是

a) UNIQUE &
b) NON NULLABLE 

(编辑自:

在 EF Core 5.0 fluent 配置中,HasAlternateKey 是否暗示 IsRequired,或者我应该将两者添加到相同的约束上?

PS..我看到属性变成了只读的,所以问题转移到HasIndex 方法上......)

var book = modelBuilder.Entity<Book>();
book.HasIndex(p => p.Code);
book.Property(p => p.Code).IsRequired();

【问题讨论】:

标签: c# .net entity-framework entity-framework-core ef-core-5.0


【解决方案1】:

只需将.IsUnique() 添加到HasIndex 方法即可。

所以:

var book = modelBuilder.Entity<Book>();
book.HasIndex(p => p.Code).IsUnique();
book.Property(p => p.Code).IsRequired();

HasAlternateKey 确实意味着唯一性,但是 EF 键不能更改,但作为索引一部分的属性可以更改值,即使索引是唯一的。唯一索引(至少在 MSSQL 中......)将由数据库强制执行,以防止您插入重复值。

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 2021-01-24
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2020-11-16
    • 2014-08-13
    • 1970-01-01
    相关资源
    最近更新 更多