SQLite-Net 拡張機能を使用する Xamarin プロジェクトには、Project と ProjectSettings の 2 つのエンティティがあります。これらのエンティティには、1 対 1 の関係があります。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 テーブル (ForeignKey) の Id と同じであることが期待されます。
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 のキーを正しく設定するために手動の手順が必要なのか疑問に思っています。