gpt4 book ai didi

c# - 如何使用 EF Core fluent api 创建多个索引?

转载 作者:行者123 更新时间:2023-12-04 16:29:11 25 4
gpt4 key购买 nike

奇怪的是,我在任何地方都找不到任何例子或提及此事。我想使用 fluent api 在我的两个列上设置索引(不是复合索引,只是两个单独的索引)。

例如,我想知道是否可以执行以下操作:

modelBuilder.Entity<T>
.HasIndex(h => h.Column1)
.HasIndex(h => h.Column2);

但是,从它的外观来看,不可能像这样链接索引。目前我正在做的是分别设置它们,如:
modelBuilder.Entity<T>
.HasIndex(h => h.Column1)

modelBuilder.Entity<T>
.HasIndex(h => h.Column2)

有一个更好的方法吗?

最佳答案

HasIndex() 返回一种 IndexBuilder 类型,它允许您调用 .IsUnique() 或 .HasName() 等。

Is there a better way to do this?



取决于您是否认为这更好,以及您是否真的想要流利。

要继续使用流畅的样式添加索引,您需要回到 EntityTypeBuilder。如果你真的想要,你可以使用扩展方法。
modelBuilder.Entity<T>
.AddIndex(h => h.Column1)
.AddIndex(h => h.Column2);

public static EntityTypeBuilder<TEntity> AddIndex<TEntity>(this EntityTypeBuilder<TEntity> builder, Expression<Func<TEntity, object>> indexExpression) where TEntity : class
{
builder.HasIndex(indexExpression);
return builder;
}

或者
builder.Entity<T>()
.AddIndex(indexBuilder => indexBuilder.HasIndex(h => h.Column1))
.AddIndex(indexBuilder => indexBuilder.HasIndex(h => h.Column2).IsUnique());

public static EntityTypeBuilder<TEntity> AddIndex<TEntity>(this EntityTypeBuilder<TEntity> builder, Action<EntityTypeBuilder<TEntity>> action) where TEntity : class
{
action(builder);
return builder;
}

关于c# - 如何使用 EF Core fluent api 创建多个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54798643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com