Невозможно добавить столбец PRIMARY KEY - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть 2 класса, один называется MainWindowViewModel и один называется Budget. У меня есть MainPage.xaml, в котором хранится весь пользовательский интерфейс приложения.

У меня проблема с настройкой первичного ключа в моем классе Budget. Я создал 2 отдельных соединения с SQLite, одно из которых называется conn, а другое - bud. Когда мое приложение запускается, оно мгновенно создает исключение для OnAppearing(), говоря, что не может добавить первичный ключ к Budget. OnAppearing Просто показывает информацию, которую пользователь сохранил в виде списка.

protected override void OnAppearing()
        {
            base.OnAppearing();

            using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
                {
                    conn.CreateTable<MainWindowViewModel>();
                    var APRS = conn.Table<MainWindowViewModel>().ToList();
                    APRListView.ItemsSource = APRS;
                }

            using (SQLiteConnection bud = new SQLiteConnection(App.FilePath))
                {
                    bud.CreateTable<Budget>();
                    var Budgets = bud.Table<Budget>().ToList();
                    BudgetListView.ItemsSource = Budgets;
                }
        }

Ниже мой App.Xaml.cs

public App()
        {
            InitializeComponent();

            MainPage = new MainPage();
        }

        public App(string filePath)
        {
            InitializeComponent();

            MainPage = new MainPage();

            FilePath = filePath;
        }

код для бюджета ниже ...

using System;
using SQLite;


namespace APRooved.ViewModels
{


    public class Budget : ViewBaseModel
    {

        [PrimaryKey, AutoIncrement]
        public int Budget_ID { get; set; }


        public string BudgetInstanceText 
        {

            get
            {
                return OutgoingProductName;
            }
        }

        public string BudgetInstanceDetail
        {

            get
            {
                return "Monthly Cost: £" + OutgoingMonthlyCostS;
            }
        }

        private string outgoingProductName { get; set; }
        public string OutgoingProductName
        {
            get => outgoingProductName;
            set
            {
                outgoingProductName = value;
                OnPropertyChanged("OutgoingProductName");
            }
        }


        private decimal outgoingMonthlyCost { get; set; }
        public decimal OutgoingMonthlyCost
        {
            get => outgoingMonthlyCost;
            set
            {

                outgoingMonthlyCost = value;
                OnPropertyChanged("outgoingMonthlyCost");
                outgoingMonthlyCostFin();
            }

        }

        private string outgoingMonthlyCostS { get; set; }
        public string OutgoingMonthlyCostS
        {
            get => outgoingMonthlyCostS;
            set
            {

                outgoingMonthlyCostS = value;
                OnPropertyChanged("outgoingMonthlyCostS");
            }

        }


        public void outgoingMonthlyCostFin()
        {

            outgoingMonthlyCostS = outgoingMonthlyCost.ToString();
        }

    }

}

1 Ответ

1 голос
/ 02 апреля 2020

наиболее вероятная причина в том, что Budget уже существует без столбца PK, и он не может изменить существующую таблицу. Удаление приложения должно исправить это, но вы также можете попробовать переименовать класс Budget в Budget2, чтобы проверить эту теорию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...