Как поделиться DbContext между различными веб-приложениями? - PullRequest
0 голосов
/ 17 февраля 2020

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

У меня есть один проект приложения, который содержит весь код ядра EF первая модель данных (Entities, Business Logi c, Enums et c).

До сих пор мы используем приложение WebAPI для обмена данными с несколькими конечными точками. Таким образом, данные, которыми мы обмениваемся сейчас, в настоящий момент довольно стабильны. Мы создаем наш DbContext, и API использует его для операций чтения и записи данных.

Теперь есть запрос клиента на создание WebUI (Blazor). Таким образом, мы все еще хотим использовать WebAPI для обмена данными в пользовательском интерфейсе, но в дальнейшем нам понадобятся дополнительные элементы бизнес-логики c из нашей модели данных (содержащие обработку событий INotifyPropertyChanged et c). Мы реализовали дескрипторы событий в классах сущностей. Поэтому мы намереваемся создать объект сеанса для каждого пользователя / клиента, который содержит экземпляр DbContext. Но как можно передать инстанцированный DbContext из Web API в мое приложение пользовательского интерфейса.

Было бы неплохо получить некоторую информацию. Спасибо за любой совет.

1 Ответ

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

Вы не передаете объект DBContext в «Приложение пользовательского интерфейса», такое как приложение Blazor. Вы не упомянули, какой вариант Blazor вы используете ... Однако следующее может быть применимо как для Blazor Server App, так и для Blazor WebAssembly ... Из того, что я понял из вашего вопроса, вы открываете конечные точки Web Api для восстановить данные и сохранить данные. Это хорошо. Вам остается только создать код в Blazor, который будет обращаться к этим конечным точкам. Вы должны использовать сервис HttpClient для этого. Если вы используете клиентскую часть Blazor, этот объект настраивается и становится доступным для внедрения в ваши компоненты и службы. Этот тип HttpClient основан на JavaScript Fetch Api.

Если вы собираетесь создать приложение Balzor Server, вам нужно будет добавить службу HttpClient в контейнер DI и настроить ее соответствующим образом, и только тогда вы сможете внедрить его в свои компоненты и сервисы. В этом случае вам следует использовать IHttpClientFactory для предоставления объектов HttpClien.

В принципе, вы должны запрашивать методы Web Api через HttpClient.

Обратите внимание, что если вы используете приложение Blazor Server, вы не нужно использовать веб-API. Вместо этого вы можете создавать сервисы, которые выполняют функции, аналогичные предоставляемым Web Api.

Пожалуйста, go для документов и ознакомьтесь с тем, как использовать HttpClient с приложениями Blazor.

Надеюсь, это поможет ...

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