7

我正在使用一个首先使用 EF 代码的系统,我想在一个表上使用一些 SQL Server 稀疏列。我目前的解决方案是删除 EF 创建的表并在数据库初始化期间通过脚本重新添加。这是否可以在从 EntityTypeConfiguration 或其他方式继承的类中使用 Fluent API 进行配置?

4

2 回答 2

6

如果您使用实体框架迁移,您可以在Up方法中为添加稀疏列的迁移发出类似这样的 SQL 语句:

Sql("alter table TableName alter column ColumnName int sparse");

dbContext.Database.ExecuteSqlCommand即使您不使用迁移,使用相同 SQL的任何一次性执行都将起作用。

这两种方法都不像您可以通过 EF 显式配置类型那样好,但它们仍然比删除和替换整个表更好。

于 2013-04-17T19:43:56.860 回答
0

根据此处的文档,现在 EF Core 6.0 支持此功能

现在可以使用 OnModelCreating 中的 IsSparse 进行配置。例如:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder
        .Entity<ForumModerator>()
        .Property(e => e.ForumName)
        .IsSparse();
}
于 2021-11-08T14:02:12.990 回答