Хорошо, я понимаю, что это загруженный вопрос, так что потерпите меня, пока я разбиваю его.
У меня есть локальная сеть с базой данных, а затем у меня есть несколько удаленных расположений с их собственными базами данных с похожие схемы. Единственный способ запрашивать базы данных в удаленных местах - это go через (несколько) изолированную машину. Таким образом, я не могу напрямую подключиться к удаленным базам данных, НО я создал службу Windows, работающую на изолированной машине, для которой я могу передать команду и параметры SQL, и служба затем выполнит запрос к удаленному базы данных и вернуть результаты запроса (текущая версия этого сервиса использует WCF).
Но с развитием технологий и моим желанием создать RESTful-версию сервиса, описанную выше ... Я смотрю на настройку сервис с Entity Framework Core, поэтому вместо передачи обобщенной командной строки c SQL и возврата DataTable
я бы хотел отправить запрос c generic и вернуть сущности EF.
Единственная проблема в том, что я недостаточно знаком, чтобы знать, могу ли я создать обобщенный c метод, который я могу передать любому обобщенному c EF-запросу ... Я знаю о обобщенных c шаблонах репозитория. , но я не собираюсь запускать только предопределенные запросы.
Ниже приведен пример того, что я делаю сейчас, есть ли способ сделать это в Entity Framework, каким-то образом предварительно собрав запрос EF и передав его в другой метод, чтобы фактически обработать запрос на сервере?
public DataTable GenericQuery(string genericSqlCommand, List<Tuple<string, object>> sqlParameters)
{
//method processes genericSqlCommand and sqlParameters using C# MySqlConnector library and returns query results as a generic DataTable to be sent as response to application calling service
}
Я понимаю проблемы с вышеупомянутым методом и признаю, что простой переход к облачной системе, где все системы могут подключиться к одной базе данных, решить много головной боли ... к сожалению, мои руки связаны в этом вопросе. То, что я объяснил выше, является лучшим решением, которое я смог придумать в текущей ситуации. Честно говоря, он работал довольно хорошо в течение нескольких лет.