1

我一直在寻找一种方法来制作,例如在数据库中使用Fluent API/的用户名是唯一的Code First。这甚至可以通过这些路线中的任何一条实现吗?

因为我找不到任何说明如何完成的教程或示例。

4

1 回答 1

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
}

数据库上下文

public class RelayContext : DbContext {
     public DbSet<Relay> Relays { get; set; }

    public RelayContext(string connectionString) : 
        base(connectionString) {
        Database.SetInitializer(new RelayContextInitializer());
    }
}

上下文初始化器

public class RelayContextInitializer : CreateDatabaseIfNotExists<RelayContext> {
    protected override void Seed(RelayContext context) {
        context.Database.ExecuteSqlCommand("CREATE UNIQUE INDEX Uix_Relay_Name ON Relays(Name)");
    }
}

就是这样。您现在在中继表的名称字段上创建了一个唯一索引。

于 2013-05-19T15:52:55.887 回答