Ошибка удаления SQLite Xamarin из-за отсутствия ПК - PullRequest
0 голосов
/ 28 сентября 2018

Я сделал приложение с sqliteDB.но я всегда получаю сообщение об ошибке, когда хочу что-то удалить ... вот мой код: модель:

class Einkauf
{


   private int _id;

    [PrimaryKey, AutoIncrement]
    public int Id
    {
        get
        {
            return _id;
        }
        set
        {
            _id = value;
        }
    }

    [MaxLength(100)]
    public string EssenName { get; set; } 

    public int Stueckzahl { get; set; }

}

функция удаления:

public partial class EinkaufAdd : ContentPage
{


    private SQLiteAsyncConnection _connection;
    private ObservableCollection<Einkauf> _einkauf;


    public EinkaufAdd ()
    {
        InitializeComponent ();

    }
    private async void Button_Clicked(object sender, EventArgs e)
    {
        var response = await DisplayAlert("Achtung", "Wollen sie wirklich 
        alle Einträge löschen?", "Ja", "Nein");
        if (response == true)
        {
           //SQLITE
            _connection = DependencyService.Get<ISQLiteDb>().GetConnection();
            await _connection.CreateTableAsync<Einkauf>();
            var einkauf = await _connection.Table<Einkauf>().ToListAsync();
            await _connection.DeleteAsync(einkauf);
        }
    }

, когда я нажимаю кнопку,Я получаю сообщение об ошибке:

"System.NotSupportedException:" Невозможно удалить List`1: у него нет PK "

".Это кнопка "удалить все", просто fyi.Can что-нибудь может мне помочь?

пс .: debugginig говорит мне, что у объекта "einkauf" есть id, essenname и все эти вещи.

1 Ответ

0 голосов
/ 28 сентября 2018

метод Delete() принимает один объект в качестве аргумента.Вы пытаетесь удалить весь список

// this returns a list of every item in the table
var einkauf = await _connection.Table<Einkauf>().ToListAsync();
await _connection.DeleteAsync(einkauf);

, чтобы удалить их все, вместо этого выполните итерацию по списку

foreach (var x in einkauf) {
  await _connection.DeleteAsync(x);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...