dotnet ef dbcontext 脚手架命令 --data-annotations 或 -d 命令行参数似乎不起作用

dotnet ef dbcontext scaffold command --data-annotations or -d command line parameter doesn't seem to work

我有一个简单的数据库 table,它具有各种属性。

我正在使用最新的 .NET core 6 和最新的 EF (6.0.4)

我想搭建我的数据库以便生成模型,所以我 运行 命令:

dotnet ef dbcontext scaffold "Server=MyServerName;Database=MyDBName;User Id=sa;Password=abc123;" 
Microsoft.EntityFrameworkCore.SqlServer -o Model --no-pluralize -d -f

-d 命令应该使用数据注释而不是流畅的注释,但它没有。我最终得到一个 MyTable class,其中清楚地列出了属性,例如public int MyTableId; public string MyTableProperty;.... 然后在我的 MyDBNameContext class OnModelCreating 方法中,几页这样的东西:

 modelBuilder.Entity<MyTable>(entity =>
            {
                entity.HasIndex(e => e.SomeColumn, "idx_somecolumn");

                entity.Property(e => e.firstcolumn)
                    .HasColumnType("decimal(8, 1)")
                    .HasColumnName("FirstColumn");

                ...

这太可怕了。帮助说明是这样的:

-d|--data-annotations Use attributes to configure the model (where possible). If omitted, only the fluent API is used.

我可以费力地手动完成并添加注释,但是如果我将来由于更改而重新生成,那么它将撤消我的工作。

是否有数据注释属性不起作用的原因?

你可以使用这个:

dotnet ef dbcontext scaffold 
"Server=MyServerName;Database=MyDBName;User Id=sa;Password=abc123;" 
Microsoft.EntityFrameworkCore.SqlServer -o Model --no-pluralize --data-annotations -f

我无法删除我的问题,所以我将 post 答案放在这里...

这是一个错误!

-d 无效,但 --data-annotations 有效。

https://github.com/dotnet/efcore/issues/26687