我有以下课程:
的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之外的所有内容......这些结果最终为空。如果您需要更多信息来了解我正在努力实现的目标,请告诉我们。
答案 0 :(得分:1)
首先,感谢您对MvvmCross SQLite社区插件的贡献。
可悲的是,SQLite-Net Extensions目前不支持复合键,只有SQLite-Net的MvvmCross实现支持多个主键,这是最近的一次更改。
我将看看支持它所需的更改,但这需要一些时间。 SQLite-Net Extensions建立在主键是唯一的假设之上,因此外键也是每个关系的唯一键。这种改编需要在架构和API方面进行一些深刻的改变。
我正在考虑这样的事情,以避免改变当前正在运行的公共API:
[CompositeForeignKey(typeof(Class1), "key1", "key2", "key3"]
public Tuple<int, int, int> Class1Key { get; set; }
我在项目中创建了一个new issue来跟踪状态。