【问题标题】:How do I query a View in SQLite.net?如何在 SQLite.net 中查询视图?
【发布时间】:2017-05-12 16:53:53
【问题描述】:

我正在使用带有本地 SQLite 数据库的 Visual Studio 中的 Xamarin.Forms PCL 编写移动应用程序。我正在使用 SQLite.net-PCL Async 插件,因为 sqlite-net-pcl 不断使我的应用程序崩溃。

我可以很好地查询表,但我不知道如何查询视图。

我如何成功查询表

型号

[Table("pitchers")]
public class Pitcher
{
    [PrimaryKey, AutoIncrement, Column("id")]
    public ushort Id { get; set; }

    [Column("first_name")]
    public string FirstName { get; set; }

    [Column("last_name")]
    public string LastName { get; set; }

    [Column("uniform_number")]
    public byte UniformNumber { get; set; }
}

查询代码

public Task<List<Pitcher>> GetAllPitchersAsync()
{
    return dbConn.Table<Pitcher>().OrderBy(i => i.LastName).ToListAsync();
}

我有一个名为“joined_pitcher_log”的视图,我正在尝试使用相同的方法进行查询。我为它创建了一个模型并使用相同的语言(order by 除外)进行查询,但我不断收到错误:

SQLite.Net.SQLiteException: no such table: joined_pitcher_log

我尝试过的事情

1) 从我为视图创建的模型中删除 table 属性。没有 view 属性可以替换它。

2) 使用 dbConn.QueryAsync 而不是 dbConn.Table 直接使用 SQL 查询视图。

3) 寻找 dbConn 的其他属性和方法。与视图无关。

如何查询视图?

更新:无法查询视图时的解决方法

我也可以在我的代码中编写 SQLite 视图的查询,但是我不知道如何引用多个模型,这是一个不同的问题。此时我将采用任一解决方案(查询视图或在我要加入的多个表/模型上编写查询)

【问题讨论】:

    标签: c# visual-studio linq sqlite xamarin


    【解决方案1】:

    从视图中获取数据的唯一方法是使用 SQLite-Net 的 Query 或 QueryAsync 方法。只需创建一个类来保存返回的数据。

    db.Query<MyReturnType> ("select * from MyView");
    

    await db.QueryAsync<MyReturnType> ("select * from MyView");
    

    【讨论】:

    • Ken,这与我已经尝试过的有什么不同(假设您要创建的类应该与“模型”部分下的格式相同)我的问题)?我尝试使用 db.QueryAsync
    • 抱歉改写了答案。唯一的方法是使用查询
    • 我的意思是这已经是我尝试过的东西(它在我的“我尝试过的东西”部分),但我仍然得到同样的“没有这样的表”错误。视图模型的结构是否应该与我在问题中的模型类似?会有什么不同?
    • 愚蠢的我。我没有从模拟器中的应用程序中清除数据,因此该应用程序使用的是旧数据库而没有我创建的视图。但是,我不必使用QueryAsync。我能够使用dbConn.Table&lt;[ModelName]&gt;().ToListAsync()
    猜你喜欢
    • 2018-11-01
    • 2014-11-25
    • 1970-01-01
    • 2016-10-29
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    相关资源
    最近更新 更多