在使用SQLite-Net扩展的Xamarin项目中,我有两个实体:Project和ProjectSettings。这些实体具有一对一的关系。 Project实体具有自动增量ID。当我最初保存项目时,将自动设置项目的ID。这很好。
public class Project
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
[OneToOne(CascadeOperations = CascadeOperation.All)]
public ProjectSettings Settings { get; set; }
}
对于ProjectSettings,我希望ProjectId与Project表中的Id(ForeignKey)相同。
public class ProjectSettings
{
[PrimaryKey, ForeignKey(typeof(Project))]
public int ProjectId { get; set; }
}
但是,在持久化Project之后,ProjectSettings表中的ProjectID为0。
我使用database.InsertOrReplaceWithChildren(project)
持久化项目。调用此方法时,Project和ProjectSetting都具有Id = 0。
由于我对SQLite-Net不熟悉,我想知道我是否错误地使用了注释,或者是否需要手动步骤才能正确设置ProjectSettings的键?
答案 0 :(得分:1)
您不能将InsertOrReplace
与AutoIncrement
主键与SQLite.Net一起使用。它将始终覆盖ID为0
的对象。使用其他插入方法,或手动分配主键。