ServiceStack SelectLazy<long> System.NullReferenceException

标签 servicestack ormlite-servicestack

            using (IDbConnection db = dbFactory.OpenDbConnection()) {
            List<long> x = db.SelectLazy<long>(
                "SELECT Id FROM MyTable").ToList();
            }

为什么 x 为空?

当我使用 Select 而不是 SelectLazy 时,或者当我在整行而不仅仅是 Id 上使用 SelectLazy 时,它会起作用。

最佳答案

在 OrmLite 中,您可以使用不同的 API 来匹配您想要的结果,例如:

  • Select*用于返回 List<MyTable> 的 API
  • Column*用于返回一列字段值的 API,例如 List<long>
  • Single*用于返回单行的 API,例如 Table
  • Scalar*用于返回单个字段值的 API,例如 long

因此,要选择一列作为字段列表,请使用 db.Column ,例如:

var results = db.Column<long>(db.From<MyTable>().Select(x => x.Id));

这些还有原始 Sql*等价物,例如:

var results = db.SqlColumn<long>("SELECT Id FROM MyTable");

关于ServiceStack SelectLazy<long> System.NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25410610/

相关文章:

redis - 如何为Redis和他的哨兵指定密码?

c# - 我可以配置 ServiceStack.Text 以将枚举值序列化为驼峰命名法吗?

metadata - ServiceStack 元数据页面的默认 URL 不正确

servicestack - 基于 Ormlite int 的枚举以 varchar(max) 的形式出现

c# - 如何让 Swagger 插件在自托管服务堆栈中工作

c# - 在 ServiceStack json 中返回空值

c# - 如何在 ServiceStack 客户端中设置 ContentType?

servicestack - 是否可以使用ServiceStack的OrmLite进行子查询连接?

servicestack - 如何使用 ServiceStack.OrmLite 创建具有多列的唯一约束?

sqlite - Servicestack-在SQLite32数据库上按日期查询OrmLite不会返回任何结果