如何使用继承在Android应用程序开发中设置sqlite数据库结构

时间:2019-01-19 03:18:36

标签: c# android sqlite inheritance model

我正在尝试在我正在开发的Android应用程序中建立数据库结构。问题是3个对象/模型从模型继承,如下所示。当我使用sqliteconnection.inserttable()插入ShoppingItem模型时,它将仅创建该模型上的2列,而忽略继承模型上的属性。这意味着我无法将Fruit插入ShoppingItem表中,因为它不包含用于保存信息的列。当我尝试将水果插入shoppingItem表中时,将引发约束异常。当我在应用程序开发之外完成此操作时,该表还包含一个discriminator列,该列说明了它是哪种对象。在Android数据库中有可能吗?

public class ShoppingItem: Java.Lang.Object
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    public string Name { get; set; }

    [ManyToMany(typeof(ShoppingListItem))]
    public List<ShoppingList> ShoppingLists { get; set; }
}

[Table("Fruits")]
public class Fruit : ShoppingItem
{
    public int NumberOfTimesPicked { get; private set; }

    public Fruit()
    {
        NumberOfTimesPicked = 0;
    }
    public void IncrementTimesPicked()
    {
        NumberOfTimesPicked++;
        SQLiteConnection db = new SQLiteConnection(Database.DataStore.DBPATH);
        db.Update(this);
    }
}

[Table("Ingredients")]
public class Ingredient : ShoppingItem
{
    public override string ToString()
    {
        return Name;
    }

    [ManyToMany(typeof(Recipe))]
    public List<Meal> Meals { get; set; }
}
[Table("MiscItems")]
public class MiscItem : ShoppingItem
{
    public string Category { get; set; }

}

0 个答案:

没有答案