未创建SQLite外键,也不创建OneToMany列

时间:2017-04-17 12:55:17

标签: sqlite xamarin foreign-keys sqlite-net

我正在尝试使用两个表创建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列。

enter image description here

为什么乘客专栏缺失?我想这是问题的根本原因(可能不是)。不确定,它是否以某种方式相关,但例如[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)
        {

        }

enter image description here

0 个答案:

没有答案