我正在Windows Store应用程序(WinRT)中实现SQLite数据库。
我想在两个表之间建立关系(1:n)
书(1)-章(n)
class Book
{
[SQLite.AutoIncrement, SQLite.PrimaryKey]
public int Id { get; set; }
public String Title { get; set; }
public String Description { get; set; }
public String Author { get; set; }
public List<Chapter> Chapters { get; set; }
public Book()
{
this.Chapeters = new List<Chapter>();
}
}
我懂了
- $exception {"Don't know about System.Collections.Generic.List`1[Audioteka.Models.Chapter]"} System.Exception {System.NotSupportedException}
+ [System.NotSupportedException] {"Don't know about System.Collections.Generic.List`1[Audioteka.Models.Chapter]"} System.NotSupportedException
+ Data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
HelpLink null string
HResult -2146233067 int
+ InnerException null System.Exception
Message "Don't know about System.Collections.Generic.List`1[Audioteka.Models.Chapter]" string
我究竟做错了什么 ?
最佳答案
只是为了跟进我的评论并进行更多研究-SQLite-net不支持无法将直接映射到数据库的任何内容。有关原因,请参见here:
如果您要这样做,可以考虑使用其他ORM实际访问数据(我使用Vici Coolstorage),或者只是从类中删除List<Chapters>
并将BookID
字段添加到Chapters
类。这就是数据库表示它的方式。
为了使用它,您可以将以下其中之一添加到您的类(class)中:
List<Chapters> Chapters {
get {
return db.Query<Chapters> ("select * from Chapters where BookId = ?", this.Id);
}
}
或者
List<Chapters> Chapters {
get {
return db.Query<Chapters>.Where(b => b.BookId == this.Id);
}
}
这将至少使您轻松地拉出列表,尽管那样会很慢,因为它每次访问数据库时都会命中数据库。
关于c# - 如何创建收藏集(1 :n) relation,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13145578/