Все остальные функции, связанные с этим, работают, мне не хватает только вызова базы данных, который я запустил нет идей.
Мой код выглядит следующим образом:
Код: Выделить всё
response = group.MapEntity();
var resourceType = group.GetResourceType();
var functionType = typeof(Func).MakeGenericType(typeof(IGroupMember), typeof(bool));
var expressionType = typeof(Expression).MakeGenericType(functionType);
var contextSetMethod = _context.GetType().GetMethod("Set", genericParameterCount: 1, Array.Empty())!.MakeGenericMethod(resourceType);
var dbSetMethod = typeof(Enumerable).GetMethods().FirstOrDefault(x => x.Name == "SingleOrDefault")!.MakeGenericMethod(expressionType);
var dynamicContext = contextSetMethod.Invoke(_context, null);
foreach (var member in group.Members)
{
var func = BuildExpression(member.MemberId);
var result = dbSetMethod.Invoke(dynamicContext, new object?[] { func });
if (result is null || result.GetType() != resourceType)
throw new Exception($"Something went wrong!!!!! {result}");
members.Add((IGroupMember)result);
}
response.Members = members;
Исключение:
System.ArgumentException: объект типа «System.Linq.Expressions.Expression1»1[System.Func'2[Trasolu.Domain.Common.IGroupMember,System.Boolean]]» невозможно преобразовать в введите 'System.Collections.Generic.IEnumerable'1[System.Linq.Expressions.Expression'1[System.Func`2[Trasolu.Domain.Common.IGroupMember,System.Boolean]]]'.
Я хочу сделать динамический вызов базы данных, функция в цикле представляет собой лямбда-выражение, которое я хочу запустить в dbSetMethod , чтобы убедиться, что я получаю только объект с заданным идентификатором.
Подробнее здесь: https://stackoverflow.com/questions/786 ... abase-call
Мобильная версия