C# 如何使用带有复合键的SQLite网络扩展

C# 如何使用带有复合键的SQLite网络扩展,c#,sqlite,xamarin.ios,mvvmcross,sqlite-net-extensions,C#,Sqlite,Xamarin.ios,Mvvmcross,Sqlite Net Extensions,我有以下课程: Class1.cs: [JsonObject(MemberSerialization.OptIn)] public class Class1 { [PrimaryKey] [JsonProperty("key1")] public string Key1 { get; set; } [PrimaryKey] [JsonProperty("key2")] public string Key2 { get; set; } [

我有以下课程:

Class1.cs:

[JsonObject(MemberSerialization.OptIn)]
public class Class1
{
    [PrimaryKey]
    [JsonProperty("key1")]
    public string Key1 { get; set; }

    [PrimaryKey]
    [JsonProperty("key2")]
    public string Key2 { get; set; }

    [PrimaryKey]
    [JsonProperty("key3")]
    public string Key3 { get; set; }

    [JsonProperty("normalStuff")]
    public string NormalStuff{ get; set; }

    [OneToMany(CascadeOperations = CascadeOperation.All)]
    [JsonProperty("customObjectList")]
    public List<CustomObject> CustomObjects { get; set; }
}

基本上,我要做的是创建一个表,其中包含到这些自定义对象的映射。SQLite网络扩展是否支持这一点?最新版本的MVVMCross SQLite社区包支持复合密钥特性。当我尝试将上述数据结构保存到我的数据库时,它会保存除CustomObjects之外的所有内容。。。这些结果都是空的。如果你需要更多的信息来了解我的目标,请告诉我

首先,感谢您对MvvmCross SQLite社区插件的贡献

遗憾的是,目前在SQLite网络扩展中不支持复合键,只有SQLite网络的MvvmCross实现支持多个主键,这是最近的一个变化

我将查看支持它所需的更改,但这需要一些时间。SQLite Net扩展是建立在主键是唯一的假设之上的,因此每个关系的外键也是唯一的。这种适应需要对体系结构和API进行一些深刻的更改

我这样想是为了避免对当前正在运行的公共API进行更改:

[CompositeForeignKey(typeof(Class1), "key1", "key2", "key3"]
public Tuple<int, int, int> Class1Key { get; set; }
[组合键(类别1)、“键1”、“键2”、“键3”]
公共元组ClassKey{get;set;}

我在项目中创建了一个API来跟踪状态。

没问题,谢谢你的精彩扩展项目!我认为API会很好地工作。目前,我认为我可以删除组合键,只需使用多列选择正确的记录。我假设它会更慢,但任何时候都不应该有超过几百条记录,所以我想我可以侥幸逃脱。我会继续监控你项目的进度!
[CompositeForeignKey(typeof(Class1), "key1", "key2", "key3"]
public Tuple<int, int, int> Class1Key { get; set; }