Как получить доступ к сущностям Entity Framework DbContext в компонентах Blazor на стороне сервера - PullRequest
0 голосов
/ 19 января 2020

Я новичок. NET Core и Blazor, в основном с WebForms и опытом MVC.

Все найденные мною документация и учебные пособия по Blazor используют отдельный проект API и получают доступ к данным через HttpClient и Json сериализация / десериализация. Я понимаю, почему это необходимо для клиентской части Blazor, использующей WebAssembly, но для серверной Blazor, использующей SignalR, что является лучшим способом доступа к базе данных напрямую из файлов компонентов .razor с использованием Entity Framework DbContext ?

Например, в MVC контроллере вы можете просто сделать что-то вроде:

private ApplicationDbContext context = new ApplicationDbContext();

и затем запросить данные, выполнив что-то вроде:

var things = context.Things.Where(t => t.ThingAttributes == something);

Есть ли подход, который является таким чистым и эффективным при работе с компонентами в серверной части Blazor?

Извините за широкую природу этого вопроса, не стесняйтесь указывать мне на блоги, документы или учебники, которые я уже должен был прочитать. Спасибо!

1 Ответ

3 голосов
/ 19 января 2020

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

@inject DataService myDataService

Я думаю, что шаблоны Blazor содержат пример того, как определить такой сервис и использовать его в ваших компонентах.

Вот ссылка на пример команды Blazor, как создать сервис и как использовать его в ваших компонентах. Служба не использует Entity Framework, но это что-то действительно незначительное, я уверен, вы справитесь.

...