Restricción única en el código del marco de la entidad primero

Pregunta

¿Es posible definir una restricción única en una propiedad usando la sintaxis fluida o un atributo? Si no, ¿cuáles son las soluciones?

Tengo una clase de usuario con una clave principal, pero me gustaría asegurarme de que la dirección de correo electrónico también sea única. ¿Es esto posible sin editar la base de datos directamente?

Solución (basada en la respuesta de Matt)

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)");
            }
        }
    }
}

Respuestas a la pregunta(19)

Su respuesta a la pregunta