为了账号安全,请及时绑定邮箱和手机立即绑定

实体框架代码优先的唯一约束

实体框架代码优先的唯一约束

慕少森 2019-10-08 09:42:07
是否可以使用流利的语法或属性在属性上定义唯一约束?如果没有,有什么解决方法?我有一个带有主键的用户类,但是我想确保电子邮件地址也是唯一的。是否可以不直接编辑数据库而实现?解决方案(基于马特的回答)public class MyContext : DbContext {    public DbSet<User> Users { get; set; }    public override int SaveChanges() {        foreach (var item in ChangeTracker.Entries<IModel>())            item.Entity.Modified = DateTime.Now;        return base.SaveChanges();    }    public class Initializer : IDatabaseInitializer<MyContext> {        public void InitializeDatabase(MyContext context) {            if (context.Database.Exists() && !context.Database.CompatibleWithModel(false))                context.Database.Delete();            if (!context.Database.Exists()) {                context.Database.Create();                context.Database.ExecuteSqlCommand("alter table Users add constraint UniqueUserEmail unique (Email)");            }        }    }}
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

从EF 6.1开始,现在可以:


[Index(IsUnique = true)]

public string EmailAddress { get; set; }

严格来讲,这将为您提供唯一索引而不是唯一约束。对于大多数实际目的,它们是相同的。


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 345 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信