作者:h40012222 | 来源:互联网 | 2022-12-22 13:03
我首先在我的UWP和.NET Standard应用程序中使用Entity Framework Core 2.0 for Sqlite代码.我的模型有一个主键整数类型的实体,根据SQLite文档应该作为自动增量.但实际上,Identity列的每一行都将0作为值.请帮助,因为我找不到与此问题相关的帮助材料.
这是我的财产,没有任何数据注释.
public Int32 No { get; set; }
我使用了流畅的API
modelBuilder.Entity()
.HasKey(c => new { c.No, c.Cod_Turno });
并在此处插入值
db.TurnosGenerals.Add(new TurnosGeneral { Cod_Turno = numeroTurnoTextBlock.Text });
db.SaveChanges();
插入的每一行c.No为0.
1> Ivan Stoev..:
我的模型有一个主键整数类型的实体,应该作为自动增量
问题是所讨论的属性不是 PK,而是复合 PK 的一部分,在这种情况下,它不被视为按惯例自动生成,如EF Core文档的Generated Values Conventions部分所述:
按照惯例,short,int,long或Guid类型的非复合主键将被设置为在add时生成值.将设置所有其他属性而不生成任何值.
您需要明确指定:
modelBuilder.Entity()
.Property(e => e.No)
.ValueGeneratedOnAdd();
更新:以上是适用于大多数数据库的一般方法.但SQLite 仅对INTEGER PRIMARY KEY类型的列支持AutoIncrement ,因此这不是EF Core限制.要么不使用自动增量,要么使其成为非复合PK.