SQLite Xamarin删除错误,因为没有PK

时间:2018-09-28 12:26:27

标签: visual-studio sqlite xamarin

我使用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:”无法删除列表`1:它没有PK“

”。它只是一个“删除所有”按钮,有人可以帮我吗?

ps .: debugginig告诉我,“ einkauf”对象具有id,essenname和所有这些东西。

1 个答案:

答案 0 :(得分:1)

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);
}