SQLite System.NotSupportedException: не знаю, как читать <T> - PullRequest
0 голосов
/ 25 июня 2018

Я разрабатываю приложение с Xamarin Forms и Sqlite.Я использую следующие nuget:

  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

1 Ответ

0 голосов
/ 25 июня 2018

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;
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...