Как я могу обработать общий c запрос через ASP. NET Core Web API, используя Entity Framework? - PullRequest
1 голос
/ 17 апреля 2020

Хорошо, я понимаю, что это загруженный вопрос, так что потерпите меня, пока я разбиваю его.

У меня есть локальная сеть с базой данных, а затем у меня есть несколько удаленных расположений с их собственными базами данных с похожие схемы. Единственный способ запрашивать базы данных в удаленных местах - это 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
}

Я понимаю проблемы с вышеупомянутым методом и признаю, что простой переход к облачной системе, где все системы могут подключиться к одной базе данных, решить много головной боли ... к сожалению, мои руки связаны в этом вопросе. То, что я объяснил выше, является лучшим решением, которое я смог придумать в текущей ситуации. Честно говоря, он работал довольно хорошо в течение нескольких лет.

1 Ответ

2 голосов
/ 17 апреля 2020

Ну, так как вы должны выставлять свою базу данных для определенных запросов, я думаю, что GraphQL поможет вам сделать это, так как это 100% RESTFull.

Его цель - раскрыть реляционную или нереляционную базу данных, используя Rest.

PS. Я не тестировал ни этот учебник, ни GraphQL с. NET Core, но, похоже, это хорошее начало для ваших потребностей: https://dev.to/dotnet/how-you-can-build-a-web-api-using-graphql-net-core-and-entity-framework-1ago

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...