我有一个产品类来存储有关产品的一些信息,并希望将其保存到我的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)
我无法从表中删除相关记录。
答案 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,.....