Код: Выделить всё
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");
Код: Выделить всё
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
Мобильная версия