I am working on a .Net MAUI app that uses sqlite-net-pcl and sqlite-net-extensions. My goal is to make a RecipeBook like app. For that I need to have a database, here is the concept so far, that I want to make: Hope you can read everything.
So far I have made these Classes:
using SQLite;
using SQLiteNetExtensions.Attributes;
namespace KitchenRecipes.MyClasses;
public class RecipePage
{
    [PrimaryKey, AutoIncrement]
    public int id { get; set; }
    public string Title { get; set; }
    public string HowToMake { get; set; }
    //public string Ingredients { get; set; }
    [ForeignKey(typeof(Ingredients))]
    public List<Ingredients> IdIngredients { get; set; }
    public RecipePage() { }
    public RecipePage(string title, string howToMake, string ingredients)
    {
        Title = title;
        HowToMake = howToMake;
        //Ingredients = ingredients;
        IdIngredients = new List<Ingredients>();//Egyenlore
    }
    public RecipePage(RecipePage rp)
    {
        id = rp.id;
        Title = rp.Title;
        HowToMake = rp.HowToMake;
        //Ingredients = rp.Ingredients;
        IdIngredients = new List<Ingredients>();//Egyenlore
    }
}
using SQLite;
using SQLiteNetExtensions.Attributes;
namespace KitchenRecipes.MyClasses;
public class Product
{
    [PrimaryKey, AutoIncrement]
    public int id {  get; set; }
    [ForeignKey(typeof(Ingredients))]
    public int idIngredient { get; set; }
    
    public string name { get; set; }
    public string unit { get; set; }
    public Product(){}
    public Product(Product p)
    {
        id = p.id;
        name = p.name;
        unit = p.unit;
    }
    public Product(int id, string name, string unit)
    {
        this.id = id;
        this.name = name;
        this.unit = unit;
    }
}
using SQLite;
using SQLiteNetExtensions.Attributes;
namespace KitchenRecipes.MyClasses;
public class Ingredients
{
    [PrimaryKey, AutoIncrement]
    public int id { get; set; }
    public string quantity { get; set; }
    [ManyToOne]
    public int idRecipe { get; set;}
    [ManyToOne]
    public List<Product> idProduct { get; set;}
}
And to really make and manage the whole database:
using System.Diagnostics;
using KitchenRecipes.MyClasses;
using SQLite;
namespace KitchenRecipes.Services;
public static class RecipePageService
{
    private static SQLiteAsyncConnection db = null;
    static async Task Init()
    {
        if (db != null)
        {
            return;
        }
        var databasePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "MyData.db");
        try
        {
            db = new SQLiteAsyncConnection(databasePath); // Get an absolute path to the database file
            await db.CreateTableAsync<Product>();
            await db.CreateTableAsync<RecipePage>();
            await db.CreateTableAsync<Ingredients>();
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex + "\n\n");
        }
    }
    public static async Task RemoveRecipePage(int id)
    {
        //Doesnt matter
    }
    public static async Task PurgeRecipePage()
    {
        //Doesnt matter
    }
    public static async Task<IEnumerable<RecipePage>> GetRecipePage()
    {
        //Doesnt matter
    }
    public static async Task<RecipePage> AddRecipePage(RecipePage recipePage)
    {
        await Init();
        List<RecipePage> lista = await GetRecipePage() as List<RecipePage>;
        for (int i = 0; i < lista.Count; i++)
        {
            if (lista[i].Title == recipePage.Title)
            {
                if (lista[i].HowToMake == recipePage.HowToMake)
                {
                    return null;
                }
            }
        }
        Ingredients ing = new Ingredients();//TESZT
        Product pr = new Product();//TESZT
        await db.InsertAsync(pr);
        await db.InsertAsync(ing);
        await db.InsertAsync(recipePage);//HERE I GET AN EXCEPTION THAT SAYS: SQLite.SQLiteException: table RecipePage has no column named IdIngredients
        //Kikeresi azt amit berakott
        var q = db.Table<RecipePage>();
        q = q.Where(x => x.Title.Equals(recipePage.Title));
        q = q.Where(x => x.HowToMake.Equals(recipePage.HowToMake));
        var myBook = q.FirstOrDefaultAsync();
        var returnable = myBook.Result;
        return returnable;
    }
}
My question is what am I doing wrong? It worked when I only had 1 table, the RecipePage table, but now I want to be able to have ingredients not just a huge plain text that says how I have to make that reciepe.
I tried to specifially say that it has that column, by giveing the `[Column("...")]` tag to the ForeignKey. And got the same exception.
 
    