无法从Xamarin应用

时间:2017-02-27 00:00:32

标签: c# linq sqlite xamarin xamarin.android

我有一个产品类来存储有关产品的一些信息,并希望将其保存到我的Xamarin应用程序中的SQLite数据库中。

class Product
{
    [PrimaryKey, AutoIncrement, Column("ID")]
    public int ID { get; set; }
    public string Name { get; set; }
    public string Category { get; set; }


    public Product(string name, string category)
    {
        Name = name;
        Category = category;
    }

    public Product()
    {

    }
}

在我的代码中,我创建了一个Product对象

Product s = new Product();
        s.Name = some_name;
        s.Category = some_category;

并在我的数据库中插入:

var db = new SQLiteConnection(db_path);
var table = db.Table<Product>();
db.Insert(s);

问题是主键总是0显然当我尝试通过传递一个项目来删除表中的记录时我有一个空

private void deleteThisProduct(Product item)
{
    var db = new SQLiteConnection(db_path);
    var table = db.Table<Product>();
    var toDelete = table.Where(x => x.ID == item.ID).FirstOrDefault();
    if (toDelete != null)
        {
            db.Delete(toDelete);
            Toast.MakeText(this, "Delete Successfully", ToastLength.Short).Show();
        }
        else
        {
            Toast.MakeText(this, "Not Found", ToastLength.Short).Show();
        }
}

无论我传递给delete函数的是什么项,toDelete总是为null,我可以从DB中删除记录。 奇怪的是,如果我的所有记录(类Product)的主键都是0,我的Linq查询应该找到一些东西,但它总是返回null。

我做错了什么?我的产品类是问题吗?谢谢。

为了清楚起见,即使在上面的代码中我只是这样做:

db.Delete(item) 

我无法从表中删除相关记录。

1 个答案:

答案 0 :(得分:0)

您是否尝试在Product.cs中保存您的Product类:`

[Serializable()]
    public class Product
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }
    public string Name { get; set; }
    public string Category { get; set; }`
}

并在create table中:

&#34; CREATE TABLE产品(ID INTEGER PRIMARY KEY,.....