c# - 如何在 SQLite.net 中查询 View ?

标签 c# visual-studio linq sqlite xamarin

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

我能够很好地查询表,但我不知道如何查询 View 。

我如何成功查询一个表

型号

[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”的 View ,我正在尝试使用相同的方法进行查询。我为它创建了一个模型并使用相同的语言(order by 除外)进行查询,但我不断收到错误消息:

SQLite.Net.SQLiteException: no such table: joined_pitcher_log

我尝试过的事情

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

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

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

如何查询 View ?

更新:无法查询 View 的解决方法

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

最佳答案

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

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

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

关于c# - 如何在 SQLite.net 中查询 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942865/

相关文章:

c# - "better"(更简单,更快,无论如何)版本'distinct by delegate'?

c# - 使用 LINQ 将一个列表与其他列表进行比较时如何在一个列表中设置一个值

c# - 泛型和父类(super class)型

c# - 通过 Tab 键浏览 XML 文档字段

visual-studio - MSBuild:在 Visual Studio 中构建解决方案后运行目标

asp.net-mvc - 仅发布 Controller

c# - ASP.NET EF6 查询模型

c# - 处理 session 超时数据丢失

c# - 将自定义文化与 ReportViewer 一起使用会返回 CultureNotFoundException

visual-studio - 启动 Visual Studio 时禁用加载 Visual Assist X