我在项目中使用EF配置文件。我有Employee的域类,它只有它的属性(无数据注释或任何关系)
我想为用户名编写唯一的密钥约束代码。
请看下面的员工班。
public class Employee : IEntity
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Gender { get; set; }
public string Address { get; set; }
public string MobileNo { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
}
我有配置类,其中包含员工类的所有验证。
using System.Data.Entity.ModelConfiguration;
class Configurations
{
public class EmployeeConfigration : EntityTypeConfiguration<Employee>
{
public EmployeeConfigration()
{
this.Property(x => x.FirstName).IsRequired().HasMaxLength(50);
this.Property(x => x.LastName).HasMaxLength(50);
// I want to write code for unique key constrain,for username property.
}
}
}
如何为username属性编写唯一键约束?
答案 0 :(得分:1)
请尝试此代码
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Infrastructure.Annotations;
...
this.Property(t => t.UserName)
.HasColumnAnnotation(
IndexAnnotation.AnnotationName,
new IndexAnnotation(
new IndexAttribute("IX_UserName", 1) { IsUnique = true }));
编辑:使用声明添加
答案 1 :(得分:0)
EF不支持Unique约束,但它支持唯一索引。没有直接的方法使用流畅的API映射它们,但您可以利用流畅的API方法添加属性,如下所示。
Property(x => x.UserName)
.HasColumnAnnotation("Index", new IndexAttribute() {IsUnique = true});
修改
正如Max Brodin在他的评论中所指出的那样,这仅在EF 6.1中得到支持。