【问题标题】:SQLite System.NotSupportedException: Don't know how to read <T>SQLite System.NotSupportedException:不知道如何阅读 <T>
【发布时间】:2018-12-03 18:33:27
【问题描述】:

我使用 Xamarin Forms 和 Sqlite 开发应用程序。 我使用以下 nugets:

  1. sqlite-net-pcl
  2. SQLiteNetExtensions

我想用 sql 创建查询。

我有两张桌子:

CREATE TABLE `AuditFormDto` (
    `AuditDtoGuid`  varchar,
    `Id`    integer NOT NULL PRIMARY KEY AUTOINCREMENT,
    `Guid`  varchar,
    `AuditFormTradePointDtoId`  integer,
    `CreationLocationJson`  varchar,
    `CompletionLocationJson`    varchar,
    `CreationDate`  bigint,
    `CompletionDate`    bigint,
    `Status`    integer,
    `PlaceInAudit`  integer,
    `CreatorId` varchar,
    `ServerId`  integer,
    `AuditServerId` integer,
    `ShouldSync`    integer,
    `Deleted`   integer
);

CREATE TABLE `AuditDto` (
    `CreatorId` varchar,
    `RegularQuestionIdsBlobbed` varchar,
    `CreationLocationJson`  varchar,
    `CompletionLocationJson`    varchar,
    `Guid`  varchar NOT NULL,
    `DateCreated`   bigint,
    `DateFinished`  bigint,
    `Name`  varchar,
    `Comment`   varchar,
    `Type`  integer,
    `Status`    integer,
    `ServerId`  integer,
    `ShouldSync`    integer,
    PRIMARY KEY(`Guid`)
);

我还创建了包装类

public class JoinedClass 
{
    public string AuditDtoGuid { get; set; }
    public int Id { get; set; }
    public int Type { get; set; }
    public string Guid { get; set; }
}

但是当我尝试执行这段代码时:

public async Task<JoinedClass> Get(int id)
{
    var strQuery = $"SELECT * FROM AuditFormDto INNER JOIN AuditDto ON  AuditDto.Guid = AuditFormDto.AuditDtoGuid where AuditFormDto.Id = {id}";
    var joinedClass = await _connection.ExecuteScalarAsync<JoinedClass>(strQuery);
    return joinedClass;
}

我有这个例外:

System.NotSupportedException: Don't know how to read JoinedClass

【问题讨论】:

    标签: c# .net sqlite xamarin.forms


    【解决方案1】:

    ExecuteScalarAsync 返回影响的计数而不是行结果。

    您可以使用QueryAsync进行更改。

    看起来像:

    public async Task<IEnumerable<JoinedClass>> Get(int id)
    {
        var strQuery = $"SELECT * FROM AuditFormDto INNER JOIN AuditDto ON  AuditDto.Guid = AuditFormDto.AuditDtoGuid where AuditFormDto.Id = {id}";
        var joinedClass = await _connection.QueryAsync<JoinedClass>(strQuery);
        return joinedClass;
    }
    

    【讨论】:

    • 什么是异常消息。看图片它工作正常。
    猜你喜欢
    • 2021-06-18
    • 2018-06-14
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 2010-12-29
    相关资源
    最近更新 更多