我找不到方法添加一个唯一的约束我的字段使用属性:
public class User
{
[Required]
public int Id { get; set; }
[Required]
// [Index("IX_FirstAndSecond", 2, IsUnique = true)] not supported by core
public string Email { get; set; }
[Required]
public string Password { get; set; }
}
我正在使用这些包:
"Microsoft.EntityFrameworkCore": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
OP询问是否可以为唯一键添加一个属性到实体类中。简单的回答是,这是可能的,但不是EF核心团队的一个开箱即用的功能。
如果你想使用一个属性为你的实体框架核心实体类添加唯一键,你可以做我在这里发布的
public class Company
{
[Required]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid CompanyId { get; set; }
[Required]
[UniqueKey(groupId: "1", order: 0)]
[StringLength(100, MinimumLength = 1)]
public string CompanyName { get; set; }
[Required]
[UniqueKey(groupId: "1", order: 1)]
[StringLength(100, MinimumLength = 1)]
public string CompanyLocation { get; set; }
}
自从实体框架核心(EF核心)5.0以来,我们可以通过数据注释配置唯一索引。
它与例如EF6略有不同,因为我们不能在属性本身上设置它,而是在类上设置它。
using Microsoft.EntityFrameworkCore; // for [Index] attribute
using System.ComponentModel.DataAnnotations; // for [Key] and [Required] attributes
namespace FunWithDataAnnotations
{
[Index(nameof(EmailAddress), IsUnique = true)]
public class User
{
[Key]
public Guid Id { get; set; }
[Required]
public string FullName { get; set; }
[Required]
public string EmailAddress { get; set; }
}
}
有关索引和数据注释的更多信息,请参见:https://learn.microsoft.com/en-us/ef/core/modeling/indexes?tabs=data-annotations