为什么 EF Core 没有设置自定义注释?

萨勒米安

在 DbContext 我声明模型如下:

modelBuilder.Entity<FileStore>().Property(x => x.FileStoreId)
            .ValueGeneratedNever()
            .ForSqlServerHasDefaultValueSql("NewSequentialId()")
            .HasAnnotation("RowGuidColumn", true);

但添加迁移后, HasAnnotation("RowGuidColumn", true) 不会向列添加任何注释:

 columns: table => new
            {
                FileStoreId = table.Column<Guid>(nullable: false, defaultValueSql: "NewSequentialId()"),
                CreationTime = table.Column<DateTimeOffset>(nullable: false),
            }

我最直接添加注释:

FileStoreId = table.Column<Guid>(nullable: false, defaultValueSql: "NewSequentialId()").**Annotation("RowGuidColumn", true)**

如何在 Add-Migration 中添加自动生成的注释?

布里塞拉姆

提供者指定将哪些模型注释复制/转换为迁移操作。要执行您的要求,您需要覆盖特定于提供程序的IMigrationsAnnotationProvider服务。

optionsBuilder.UseSqlServer(connectionString)
  .ReplaceService<SqlServerMigrationsAnnotationProvider, MyMigrationsAnnotationProvider>();

这是实现。

class MyMigrationsAnnotationProvider : SqlServerMigrationsAnnotationProvider
{
    public override IEnumerable<IAnnotation> For(IProperty property)
        => base.For(property)
            .Concat(property.GetAnnotations().Where(a => a.Name == "RowGuidColumn"));
}

从那里你需要做一些事情通过覆盖特定于提供者的IMigrationsSqlGenerator服务将其转换为 SQL

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么没有EF Core OfType(Type type)方法?

为什么没有简单的方法在EF Core中定义多对多关系?

具有复合键的自定义EF Core AddOrUpdate

EF Core自定义计数查询

为什么我的EF Core迁移会忽略模型的OnDelete设置?

为什么EF Core 2.2的默认主键设置为nvarchar(450)

尽管没有进行任何更改,为什么EF Core在每次迁移时都会更新种子布尔字段?

为什么 EF Core 2.0 似乎生成了错误的值?

如何在EF Core中使用自定义的HistoryRepository?

如何控制EF Core运行自定义迁移的顺序?

EF Core 中的 GetColumnBaseName 和 GetColumnName 有什么区别?

EF Core中AddRange和AddRangeAsync有什么区别

.NET Core 3 EF中不存在没有联合实体的MN关系,也没有关于为什么的文档

未存储在 ModelSnapshot 中的拥有实体的 EF Core 2 自定义 PK 名称

为什么设置backgroundColor对我的自定义UIView没有可见效果?

为什么我的android自定义帐户没有显示在“帐户和设置”中?

为什么EF代码没有选择单个列?

为什么将DBContext放入IMemoryCache(.NET Core / EF Core)后将其丢弃

在 EF Core 中设置预定义条件

EF Core-如何避免使用自定义的RequiredAttribute将数据库列设置为不可为空

HasColumnName for EF Core发生了什么?

为什么投影在EF Core 2.0中不包括导航嵌套属性?

在EF Core中使用Include(或ThenInclude)时,为什么不需要指定类型?

为什么在更新模型的子列表时 EF Core 在删除之前插入而不是删除然后插入?

当包含.Query()时,为什么EF Core 3不会将集合标记为已加载?

试图了解为什么在这种情况下会发生EF Core InvalidOperationException

当我不使用.Include()查询时,为什么EF Core会加载子实体

为什么EF Core始终使用此存储过程返回-1?

为什么我不能使用postgresql将IsTsVectorExpressionIndex添加到EF CORE的modulebuilder中?