私は非常に単純な関係を持っています。私のモデルは次のようになります。
public class Project
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string Name { get; set; }
[ForeignKey(typeof(User))]
public int ProjectManagerID { get; set; }
[ManyToOne]
public User ProjectManager { get; set; }
}
public class User
{
public string Login { get; set; }
[OneToMany]
public List<Project> Projects { get; set; }
}
問題は、ユーザーを保存せずにユーザーへの参照を使用してプロジェクトを簡単に保存でき、制約違反の例外が発生しないことです。
database.Insert(new Project
{
Name = "aaa",
ProjectManagerID = 8
});
無効なユーザー ID を使用してプロジェクトをクエリすることもできますが、User テーブルにレコードが保存されていません。もう 1 つの興味深い点は、このデータベースを開くと、上記のような行を SQLite 管理ツールに保存できないことです。そのため、データベース スキーマは問題ないと確信しています。
これは、sqlite-net-extensions を使用した sqlite-net PCL ライブラリでは正常ですか?
更新: 私の sqlite バージョンは 3.8.7.4 です