我一直在寻找一种方法,例如使用Fluent API
/ Code First
在数据库中唯一的用户名。这甚至可以通过这些路线之一吗?
因为我找不到任何教程或示例来说明这是如何完成的。
答案 0 :(得分:3)
您必须提供Context Initializer并覆盖Seed方法以初始化您的数据库。在那里,您可以使用 DbContext.Database.ExecuteSqlCommand 添加唯一索引。以下是相同的示例代码。
<强>模型强>
public class Relay {
//Scalar Properties
private int _id;
[Key]
public virtual int Id {
get { return _id; }
set { SetField(ref _id, value, () => Id); }
}
private string _name;
[MaxLength(100)]
[Required]
public virtual string Name {
get { return _name; }
set { SetField(ref _name, value, () => Name); }
}
//Other properties of Model
}
<强>的DbContext 强>
public class RelayContext : DbContext {
public DbSet<Relay> Relays { get; set; }
public RelayContext(string connectionString) :
base(connectionString) {
Database.SetInitializer(new RelayContextInitializer());
}
}
<强> ContextInitializer 强>
public class RelayContextInitializer : CreateDatabaseIfNotExists<RelayContext> {
protected override void Seed(RelayContext context) {
context.Database.ExecuteSqlCommand("CREATE UNIQUE INDEX Uix_Relay_Name ON Relays(Name)");
}
}
那就是它。您现在在Relays Table的Name字段中创建了唯一索引。