在 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] 删除。
我来说两句