0

我有以下课程:

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; }
}

然后是我的 CustomObject 类:

[JsonObject(MemberSerialization.OptIn)]
public class CustomObject
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    [ForeignKey(typeof(Class1))]
    public string Class1Key{ get; set; }

    [JsonProperty("description")]
    public string Description { get; set; }

    [JsonProperty("value")]
    public string Value { get; set; }
}

基本上我想要完成的是有一个表,其中包含到这些自定义对象的映射。SQLite-Net 扩展是否支持这一点?最新版本的 MVVMCross SQLite 社区包支持复合键方面。当我尝试将上述数据结构保存到我的数据库时,它会保存除我的 CustomObjects 之外的所有内容......最终为空。如果您需要更多信息来了解我想要完成的工作,请告诉我!

4

1 回答 1

1

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

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

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

我正在考虑这样的事情,以避免当前工作的公共 API 发生变化:

[CompositeForeignKey(typeof(Class1), "key1", "key2", "key3"]
public Tuple<int, int, int> Class1Key { get; set; }

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

于 2014-10-29T09:19:50.820 回答