【问题标题】:Automatically set entitykey in One-to-One relationship with SQLite-Net extensions使用 SQLite-Net 扩展在一对一关系中自动设置 entitykey
【发布时间】:2016-10-17 19:10:21
【问题描述】:

在使用 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 在持久化 Project 后为 0。 我正在使用database.InsertOrReplaceWithChildren(project) 坚持这个项目。调用此方法时,Project 和 ProjectSettings 的 Id=0。

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

【问题讨论】:

    标签: c# entity-framework xamarin sqlite-net sqlite-net-extensions


    【解决方案1】:

    在 SQLite.Net 中,您不能将 InsertOrReplaceAutoIncrement 主键一起使用。它将始终覆盖 ID 为 0 的对象。要么使用其他插入方法,要么手动分配主键。

    【讨论】:

      猜你喜欢
      • 2015-01-06
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多