Entity framework 在主键实体框架6.0上创建非聚集索引
我知道,这表明不可能首先通过代码创建具有非聚集索引的主键。还是这样吗Entity framework 在主键实体框架6.0上创建非聚集索引,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,我知道,这表明不可能首先通过代码创建具有非聚集索引的主键。还是这样吗 理想情况下,我希望通过EntityTypeConfiguration指定我的主键(Guid)有一个非聚集索引,还有另一列(int)有聚集索引。AFAIK这在EntityTypeConfiguration中是不可能的。但是,您可以通过代码优先迁移来实现这一点。工作示例: public class Product { public Guid Id { get; set; } public int Pric
理想情况下,我希望通过EntityTypeConfiguration指定我的主键(Guid)有一个非聚集索引,还有另一列(int)有聚集索引。AFAIK这在EntityTypeConfiguration中是不可能的。但是,您可以通过代码优先迁移来实现这一点。工作示例:
public class Product
{
public Guid Id
{ get; set; }
public int Price
{ get; set; }
}
class AppDbContext : DbContext
{
public DbSet<Product> Products
{ get; set; }
}
public partial class InitialCreate : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Products",
c => new
{
Id = c.Guid(nullable: false),
Price = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id, clustered: false)
.Index(t => t.Price, clustered: true);
}
public override void Down()
{
DropIndex("dbo.Products", new[] { "Price" });
DropTable("dbo.Products");
}
}
您还可以使用
OnModelCreating
方法执行此操作,如下所示:
modelBuilder.Entity(entityTypeName)
.HasKey(nameof(ClassName.Id))
.ForSqlServerIsClustered(false);
谢谢我发现了一些类似的东西。我想当时情况仍然如此。我等了一会儿才接受。可能是@Korayem的重复,他说我使用EF 6.1?你标记了问题entity-framework-6,所以我假设是6.1。我编辑了标题并删除了重复的请求。非常感谢。为了搜索者的利益,我为EntityFramework Core创建了一篇相关文章,这也支持此功能-
modelBuilder.Entity(entityTypeName)
.HasKey(nameof(ClassName.Id))
.ForSqlServerIsClustered(false);