[英]Sqlite-net extensions relations always null
我试图在MvvmCross 4中使用扩展。我想要做的很简单:我有两个表有一对多的关系,并且想要访问它。
我有两个类, BusLine
和BusLineGroup
。 每个BusLine都有一个组作为外键。 我在代码中做的是运行一个简单的LINQ-Query来获取所有的Buslines:
var testQuery =
from busLine in this._connection.Table<BusLine>()
select busLine;
查询本身有效,但如果我检查返回对象的字段,则该组始终为null
! 请参阅下面的类和表定义。
我究竟做错了什么? 为什么该组始终为null
? 谢谢你的帮助。
代码中的类:
public class BusLine
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
[ForeignKey(typeof(BusLineGroup))]
public int BusLineGroup { get; set; }
[ManyToOne]
public BusLineGroup LineGroup { get; set; }
}
public class BusLineGroup
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
public string Color { get; set; }
public string MainStations { get; set; }
[OneToMany(CascadeOperations = CascadeOperation.All)]
public List<BusLine> BusLines { get; set; }
}
两个表:
CREATE TABLE "BusLineGroup" (
`Id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`Name` TEXT NOT NULL,
`Color` TEXT NOT NULL,
`MainStations` TEXT NOT NULL
);
CREATE TABLE "BusLine" (
`Id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`Name` TEXT NOT NULL,
`BusLineGroup` INTEGER NOT NULL,
FOREIGN KEY(`BusLineGroup`) REFERENCES `BusLineGroup`(`Id`)
);
已安装的Nuget-Packages:
注意: MvvmCross包自动包含SQLite.Net-PCL。 所以这两者都使用相同的PCL。
您没有在那里使用任何SQLite-Net Extensions方法,您使用的是对您的关系一无所知的简单sqlite.net方法。 您必须使用WithChildren
方法从数据库读取和写入关系。
例如,您的查询可以替换为此行:
var testQuery = this._connection.GetAllWithChildren<BusLine>();
这也将从数据库中获取第一级关系。
我建议您查看SQLite-Net Extensions文档和示例项目以获取更多示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.