0

在使用 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; }
}

但是,持久化项目后,ProjectSettings 表中的 ProjectID 为 0。我正在使用database.InsertOrReplaceWithChildren(project). 调用此方法时,Project 和 ProjectSettings 的 Id=0。

由于我对 SQLite-Net 很陌生,我想知道我是否错误地使用了注释,或者是否需要手动步骤才能正确设置 ProjectSettings 的键?

4

1 回答 1

1

您不能与 SQLite.NetInsertOrReplace的主键一起使用。AutoIncrement它总是会覆盖 ID 的对象0。要么使用另一种插入方法,要么手动分配主键。

于 2016-10-17T11:10:21.257 回答