【问题标题】:Remove Auto Increment in EF Core 1.0 RC2 (former EF 7 RC2)删除 EF Core 1.0 RC2(前 EF 7 RC2)中的自动增量
【发布时间】:2017-06-13 23:40:02
【问题描述】:

在 Entity Framework Core 1.0 RC2(以前的 Entity Framework 7 RC2)中,默认情况下,所有整数主键都是 auto increment 字段。我想尽一切办法将其删除。从使用数据注释到流畅的 API,什么都行不通。

使用数据注释:

[Key, Column(Order = 1, TypeName = "INT"), DatabaseGenerated(DatabaseGeneratedOption.None)]

使用流畅的 API:

modelBuilder.Entity<tblProduct>().HasKey(t => t.ProdId).HasAnnotation("DatabaseGenerated", DatabaseGeneratedOption.None);

//OR use the following
modelBuilder.Entity<tblProduct>().HasKey(t => t.ProdId).HasAnnotation("DatabaseGenerated", 0);

//OR use the following
modelBuilder.Entity<tblProduct>().HasKey(t => t.ProdId).HasAnnotation("Sqlite:Autoincrement", false);

没有任何效果:(

你能帮帮我吗?

更新

根据要求,这是我在运行 add-migration LocalDB_v1

后得到的表脚本
migrationBuilder.CreateTable(
            name: "tblProduct",
            columns: table => new
            {
                ProdId = table.Column<int>(nullable: false)
                    .Annotation("Sqlite:Autoincrement", true),
                Name = table.Column<string>(nullable: true),
                Description = table.Column<string>(nullable: true)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_tblProduct", x => x.ProdId);
            });
...
...
...

【问题讨论】:

  • 你能发布表格脚本吗?
  • 更改模型后是否生成迁移?
  • @VolodymyrBilyachat - 我已按要求更新了我的问题。是的,在我更改模型后,我删除了现有的迁移和快照并重新运行 add-migration LocalDB_v1
  • 正如你所说,它适用于 RC1,然后我会更新到该版本并将错误发布到 github
  • 获取更新。目前有 EF Core v1.1.0 版本,停留在 RC(旧)版本会施加限制且没有修复。

标签: c# sqlite entity-framework-core ef-fluent-api


【解决方案1】:

在 EF Core 中,key and property are configured separately

指定密钥:

modelBuilder.Entity<tblProduct>().HasKey(t => t.ProdId);

配置属性不自动递增:

modelBuilder.Entity<tblProduct>().Property(t => t.ProdId).ValueGeneratedNever();

【讨论】:

  • 很遗憾,这对我不起作用;由于某种原因 ValueGeneratedNever() 方法不存在,但 HasDatabaseGeneratedOption(DatabaseGeneratedOption.None) 存在。我使用了它,它与使用数据注释一样大。
【解决方案2】:

我没有使用 EF 7,但有几点需要检查

  • 更改模型后需要更新数据库、迁移或手动
  • 如果您现在有字段自动增量,请检查数据库

【讨论】:

  • 全新项目也会发生这种情况。 EF 7 RC1 很好,但 RC2 为整数主生成所有自动增量。我想删除这个自动增量字段。此外,我不需要更新数据库(即不需要向后兼容),因为我的项目仍在开发中。
  • @Sam 然后尝试更新到 RC1,并在 github 中写 bug
  • @RC1 很好,因为在 RC1 中默认情况下它是 NOT 自动增量字段。好的,会写信到github...这将是我第一次写信给github。大声笑...
猜你喜欢
  • 1970-01-01
  • 2016-10-10
  • 2016-09-21
  • 1970-01-01
  • 2016-09-26
  • 2016-10-08
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多