вызов динамической хранимой процедуры c#

#c# #.net #entity-framework-core

Вопрос:

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

У меня проблема, когда я пытаюсь динамически вызвать модель на основе строки из базы данных. У меня есть столбец под названием «TableReference», в котором, по сути, содержится название модели.

Мне нужно это сделать, чтобы вызвать хранимые процедуры и получить результаты, как ожидалось, и в правильном формате.

Я пробовал использовать отражение, но, похоже, не могу заставить его работать.

Текущий код, который у меня есть, таков

 var type = Assembly.GetExecutingAssembly().GetTypes().FirstOrDefault(t => t.Name == Reference.TableReference);

var method = _context.GetType().GetMethods().First(x => x.IsGenericMehtod amp;amp; x.Name == "Set");
var generic = method.MakeGenericMethod(type);
var set = <DbSet<(THIS IS WHAT I NEED TO BE DYNAMIC)>>generic.Invoke(_context, null);

var results = await set.FromSqlRaw("exec PROCEDURE_NAME").ToListAsync();
 

Я знаю, что это работает с точки зрения кода, так как, когда я пишу <DbSet<>> с типом, который, как я ожидаю, он вернет, он возвращает результаты. Однако, как упоминалось ранее, это полностью динамично или должно быть полностью динамичным.

Любая помощь будет очень признательна!

Спасибо

Комментарии:

1. Это несовместимо с EF. Вы можете использовать обычный ADO.NET если вам нужно изучить результирующие наборы перед загрузкой в объекты в клиенте.

2. Мне на самом деле не нужна ссылка на объект, так как она возвращается сразу, но без того, чтобы я получил ошибку, потому FromSqlRaw что ее не существует, есть ли способ применить это к любому, чтобы обойти это?

3. Вам придется продолжить размышления для вызова FromSqlRaw<TEntity> <TEntity> docs.microsoft.com/en-us/dotnet/api/…

4. Мы разработали полную платформу, основанную на интерфейсе, управляемом хранимыми процедурами. Забудьте о наборе данных<>, так как в данном случае это совсем не динамично, и каждый раз, когда вы добавляете что-то в таблицу, вам также потребуется настроить свои классы в соответствии с вашими данными, что противоречит всей цели сделать их управляемыми процедурами. Если вы хотите перейти к полной динамике, ваш код должен служить только в качестве анализатора данных и построителя пользовательского интерфейса на основе данных, возвращаемых из процедур и мета-таблиц.