如何使用 SQLite-net-extensions 允许 NULL 外键

How to Allow NULL Foreign Keys with SQLite-net-extensions

我正在尝试添加可为 null 的外键映射,但它不起作用。我知道数据库允许空值,因为我可以在使用 Datagrip 时插入一个带有空外键的新记录。我只在尝试从 Android(SQLite.SQLiteException: 'Constraint') 的 Xamarin.Forms 项目构建中插入时出现错误 我的 类 看起来像:

 public class Item
  {
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string Name { get; set; }
    ...
    [ForeignKey(typeof(Location))]   
    public int LocationId { get; set; }
    [ManyToOne] 
    public Location Location { get; set; }
  }
  public class Location
  {    
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string Name { get; set; }
    ...
    [OneToMany]  
    public List<Item> Items { get; set; }
  }

我的插页像

//This will no work
var todoItem = new Item()
{
  Name = "Test item " + DateTime.Now.TimeOfDay.ToString(),
  Description = "Desc",
  Location = null  // I tried with and without this line
};
await App.Database.SaveItemAsync(todoItem);

//This will work
var todoItem = new Item()
{
  Name = "Test item " + DateTime.Now.TimeOfDay.ToString(),
  Description = "Desc",
  LocationId = 1
};
await App.Database.SaveItemAsync(todoItem);

知道我做错了什么吗?谢谢

显然库需要 id 字段可以为空,所以

[ForeignKey(typeof(Location))]  
public int LocationId { get; set; }

我应该使用

[ForeignKey(typeof(Location))]  
public int? LocationId { get; set; }

PS:在我的例子中,只是构建项目并没有使更改生效,我只能在重建项目后才能看到结果..(我是 Xamarin 的新手,可能我有什么配置错误...我希望)