我正在尝试使用两个表创建SQLite DB,其中第二个表具有外键。尽管使用了SQLite-Net Extensions中的示例代码,我仍然无法实现这一点。每次运行代码时,都不会创建列。
我正在使用sqlite-net-pcl(1.3.1)和SQLite-Net Extensions。
public class Bus
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string PlateNumber { get; set; }
[OneToMany]
public List<Person> Passengers { get; set; }
}
public class Person
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
[ForeignKey(typeof(Bus))]
public int BusId { get; set; }
}
var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var library = Path.Combine(documents, "..", "Library");
var filename = Path.Combine(library, "database.db3");
var db = new SQLiteConnection(filename);
db.CreateTable<User>();
db.CreateTable<Purchase>();
db.CreateTable<Bus>();
db.CreateTable<Person>();
我应该有两张桌子 - 巴士和人。总线应该有3列,但只创建了2列。
为什么乘客专栏缺失?我想这是问题的根本原因(可能不是)。不确定,它是否以某种方式相关,但例如[NotNull]
属性也不起作用。
感谢
EDIT1:
我尝试了以下代码,但Passengers
为空。
SQLiteConnection db = new SQLiteConnection(filePath);
SQLiteConnection db = new SQLiteConnection(filePath);
db.DeleteAll<Bus>();
db.DeleteAll<Person>();
db.CreateTable<Bus>();
db.CreateTable<Person>();
db.Insert(new Bus { PlateNumber = "446s-sef5", Id = 1 });
db.Insert(new Person { Name = "Petr" , BusId = 1});
db.Insert(new Person { Name = "George" , BusId = 1});
var busses = db.Table<Bus>();
foreach (var bus in busses)
{
}