如果我想要单个原始值,例如intstringfloat等,我可以这样做。

using (var db = new SQLiteConnection(DbPath))
{
    double i = db.CreateCommand("select salary from PersonMaster where personId = ?", 9).ExecuteScalar<double>();
}


如果我尝试返回个人主人的整个对象,即单行,则以下代码返回null

using (var db = new SQLiteConnection(DbPath))
{
    PersonMaster objPersonMaster = db.CreateCommand("select * from PersonMaster where personId = ?", 9).ExecuteScalar<PersonMaster>();
}


我必须使用这个

using (var db = new SQLiteConnection(DbPath))
{
    List<PersonMaster> lstPersonMaster = db.Query<PersonMaster>("select * from PersonMaster where personId = ?", 9);
    PersonMaster objPersonMaster = lstPersonMaster.First();
}


有什么办法可以将单行作为对象,而不是处理List<T>

最佳答案

我假设您正在使用SQLite-Net。如果是这种情况,可以使用Find方法。 Find使用其主键获取一个对象。

personId字段需要PrimaryKey属性,如下所示:

public class PersonMaster
{
    [PrimaryKey]
    public int personId { get; set; }

    public string name { get; set; }
    public decimal salary { get; set; }
}


然后,您可以像这样使用Find

// get person 9
PersonMaster person9 = db.Find<PersonMaster>(9);

10-08 11:13