Сначала я использую базовую базу данных Entity Framework.Во многих таблицах у меня есть столбец «Сортировка», который имеет тип «smallint», значение по умолчанию «1000» и индекс.Вместо того, чтобы вручную настраивать этот столбец для каждой таблицы
protected override void OnModelCreating(ModelBuilder builder) {
// ...
builder.Entity<SCISupplier>(entity => {
// entity.Property(e => e.DTCreate).HasDefaultValueSql("CURRENT_TIMESTAMP");
entity.Property(e => e.IsHidden).HasDefaultValue(false);
// entity.Property(e => e.Sort).HasDefaultValue(1000); // <-- THIS
entity.HasIndex(e => e.IsHidden);
entity.HasIndex(e => e.Sort); // <-- AND THIS
});
// ...
}
Я хочу сделать это для всех таблиц:
foreach (var property in builder.Model.GetEntityTypes()
.SelectMany(t => t.GetProperties())
.Where(p => p.ClrType == typeof(Int16) && p.Name == "Sort"
)) {
property.Relational().DefaultValueSql = "1000";
}
Это прекрасно работает, но как добавить индекс в этот столбец?Как то так (не работает):
foreach (var property in builder.Model.GetEntityTypes()
.SelectMany(t => t.GetProperties())
.Where(p => p.ClrType == typeof(Int16) && p.Name == "Sort"
)) {
property.Relational().DefaultValueSql = "1000";
property.AddIndex(); // <-- THIS DOESN'T WORK
}