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

Nib*_*Pig 5 .net scaffolding entity-framework-core entity-framework-migrations

我有一个简单的数据库,其中有一张表,该表具有各种属性。

我正在使用最新的 .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
Run Code Online (Sandbox Code Playgroud)

-d 命令应该使用数据注释而不是流畅注释,但事实并非如此。我最终得到一个MyTable类,其中清楚地列出了属性,例如public int MyTableId; public string MyTableProperty;....,然后在我的MyDBNameContextOnModelCreating方法中,有几页这样的内容:

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

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

                ...
Run Code Online (Sandbox Code Playgroud)

这真是太可怕了。帮助中是这么说的:

-d|--data-annotations 使用属性来配置模型(如果可能)。如果省略,则仅使用 Fluent API。

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

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

Nib*_*Pig 7

我无法删除我的问题,所以我只能在这里发布答案......

这是一个错误!

-d不是在工作,而是--data-annotations在工作。

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

  • 我遇到了同样的问题,现在它也为我解决了:)感谢您分享@vahid-tajari NibblyPig (2认同)