Sam*_*Sam 4 c# sqlite entity-framework-core ef-fluent-api
在Entity Framework Core 1.0 RC2(以前的Entity Framework 7 RC2)中,默认情况下,所有整数主键都是自动增量字段.我尝试了一切来删除它.从使用数据注释到流畅的API,没有任何作用.
使用数据注释:
[Key, Column(Order = 1, TypeName = "INT"), DatabaseGenerated(DatabaseGeneratedOption.None)]
Run Code Online (Sandbox Code Playgroud)
使用流畅的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);
Run Code Online (Sandbox Code Playgroud)
没有任何工作:(
你能帮我么?
正如请求的那样,这是运行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);
});
...
...
...
Run Code Online (Sandbox Code Playgroud)
Iva*_*oev 15
在EF Core中,密钥和属性是单独配置的.
要指定密钥:
modelBuilder.Entity<tblProduct>().HasKey(t => t.ProdId);
Run Code Online (Sandbox Code Playgroud)
要配置属性不是自动增量:
modelBuilder.Entity<tblProduct>().Property(t => t.ProdId).ValueGeneratedNever();
Run Code Online (Sandbox Code Playgroud)