SQLite JOIN выдает исключение аргумента в приложении MAUIC#

Место общения программистов C#
Ответить
Anonymous
 SQLite JOIN выдает исключение аргумента в приложении MAUI

Сообщение Anonymous »

У меня есть вспомогательный класс, который я хочу расширить, включив в него условия JOIN для выбора. Метод, который я использую, выглядит следующим образом

Код: Выделить всё

public async Task JoinOn(string prop, string asName, Tuple comp, string? table1, string? table2) where TV : class, new()
{
var tbl1 = GetName(typeof(T).ToString());
var tbl2 = GetName(typeof(TU).ToString());

try
{
var sql = table1 is null ? $"SELECT e.*, d.{prop} as {asName} FROM {tbl1} e JOIN {tbl2} d ON e.{comp.Item1}=d.{comp.Item2}" :
$"SELECT e.*, d.{prop} as {asName} FROM {table1} e JOIN {table2} d ON e.{comp.Item1}=d.{comp.Item2}";

var list = await connection.QueryAsync(sql);
return list ?? new List();
}
catch (Exception ex)
{
#if DEBUG
Debug.WriteLine($"{ex.Message}--{ex.InnerException?.Message}");
#endif
return new List();
}
}
Вызывающий абонент выглядит так

Код: Выделить всё

var items = await repository.JoinOn
("Name" , "DepartmentName", new  Tuple("DepartmentId", "Id"), "employees", "departments");
Я установил точку останова в помощнике, и команда SQL выглядит нормально

Код: Выделить всё

SELECT e.*, d.Name as DepartmentName
FROM employees e
JOIN departments d ON e.DepartmentId = d.Id
При сборке приложения я получаю сообщение об ошибке.

System.ArgumentNullException: значение не может быть нулевым. (Параметр «тип»)

Я попробовал передать asName в качестве параметра запроса (изменив {asName на ? в команде SQL) и получаю ту же ошибку.
Я взял за основу свой код https://github.com/icebeam7/DemoFK, поскольку он работает нормально, и я могу протестировать против известного примера. Модели были скопированы напрямую.
Я знаю, что это проблема в моем коде, но не знаю, где именно.
Для сравнения: мою версию можно найти по адресу https://github.com/nodoid/MAUIForeignKey

Подробнее здесь: https://stackoverflow.com/questions/790 ... pplication
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»