Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 移除EF核心1.0 RC2中的自动增量(原EF 7 RC2)_C#_Sqlite_Entity Framework Core_Ef Fluent Api - Fatal编程技术网

C# 移除EF核心1.0 RC2中的自动增量(原EF 7 RC2)

C# 移除EF核心1.0 RC2中的自动增量(原EF 7 RC2),c#,sqlite,entity-framework-core,ef-fluent-api,C#,Sqlite,Entity Framework Core,Ef Fluent Api,在Entity Framework Core 1.0 RC2(以前的Entity Framework 7 RC2)中,默认情况下,所有整数主键都是自动递增字段。我想尽一切办法把它移走。从使用数据注释到fluent API,一切都不起作用 使用数据注释: [Key, Column(Order = 1, TypeName = "INT"), DatabaseGenerated(DatabaseGeneratedOption.None)] 使用fluent API: modelBuilder.Ent

在Entity Framework Core 1.0 RC2(以前的Entity Framework 7 RC2)中,默认情况下,所有整数主键都是自动递增字段。我想尽一切办法把它移走。从使用数据注释到fluent API,一切都不起作用

使用数据注释:

[Key, Column(Order = 1, TypeName = "INT"), DatabaseGenerated(DatabaseGeneratedOption.None)]
使用fluent 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);
modelBuilder.Entity().HasKey(t=>t.ProdId).hasnotation(“DatabaseGenerated”,DatabaseGenerateOption.None);
//或者使用以下命令
modelBuilder.Entity().HasKey(t=>t.ProdId).hasnotation(“DatabaseGenerated”,0);
//或者使用以下命令
modelBuilder.Entity().HasKey(t=>t.ProdId).hasnotation(“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);
            });
...
...
...
migrationBuilder.CreateTable(
名称:“tblProduct”,
列:表=>new
{
ProdId=table.Column(可空:false)
.Annotation(“Sqlite:Autoincrement”,true),
Name=table.Column(可空:true),
Description=table.Column(可空:true)
},
约束:表=>
{
表.PrimaryKey(“PK_tblProduct”,x=>x.ProdId);
});
...
...
...

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

  • 更改模型后,需要更新数据库、迁移或手动更新
  • 若您现在已在字段上自动递增,请检入数据库
    • 在EF核心中

      要指定密钥,请执行以下操作:

      modelBuilder.Entity<tblProduct>().HasKey(t => t.ProdId);
      
      modelBuilder.Entity().HasKey(t=>t.ProdId);
      
      要配置不自动递增的属性,请执行以下操作:

      modelBuilder.Entity<tblProduct>().Property(t => t.ProdId).ValueGeneratedNever();
      
      modelBuilder.Entity().Property(t=>t.ProdId.ValueGeneratedNever();
      
      你能发布表脚本吗?在你更改模型后,你生成了迁移吗?@VolodymyrBilyachat-我已根据请求更新了我的问题。是的,在我更改模型后,我删除了现有的迁移和快照,并重新运行添加迁移LocalDB\u v1,正如你所说,它与RC1一起工作,然后我将更新到该版本并将错误发布到githubGet已更新。目前有EF Core v1.1.0版本,停留在RC(旧)版本会带来限制,并且没有修复。在全新项目中也会出现这种情况。EF 7 RC1很好,但RC2会为integer primary生成所有自动增量。我想删除此自动增量字段。此外,我不需要更新数据库(即不需要向后兼容)因为我的项目仍在开发中。@Sam然后尝试更新到RC1,并在中写入buggithub@RC1很好,因为在RC1中,默认情况下它不是自动递增字段。好的,将写入github…这将是我第一次写入github.lol…遗憾的是,这对我不起作用;出于某种原因,ValueGeneratedNever()方法不存在,但hasDatabaseGenerateOption(databaseGenerateOption.None)存在。我使用了它,它与使用数据注释产生的影响一样大。