Исключение при попытке сделать динамический вызов базы данныхC#

Место общения программистов C#
Ответить
Anonymous
 Исключение при попытке сделать динамический вызов базы данных

Сообщение Anonymous »

У меня есть групповой класс, содержащий элементы, которые могут относиться к разным типам классов.
Все остальные функции, связанные с этим, работают, мне не хватает только вызова базы данных, который я запустил нет идей.
Мой код выглядит следующим образом:

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

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;
Исключение возникает при dbSetMethod.Invoke(...)
Исключение:

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
Ответить

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

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

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

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

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