Доступ к базе данных Asp Net Core - PullRequest
0 голосов
/ 17 октября 2019

мой вопрос, как я могу получить доступ к dbcontext без HTML-страницы. У меня есть проект Web Api, в котором классы из HTML могут получить доступ к базе данных, как это

    public class CreateModel : PageModel
    {
       private readonly Home5.Models.Home5Context _context;

       public CreateModel(Home5.Models.Home5Context context)
       {
           _context = context;
       }

       public IActionResult OnGet()
       {
           return Page();
       }
    }

Но когда я создаю свои собственные классы, я не могу получить доступ к контексту, потому что я не могу создатьэкземпляр класса без контекста, чтобы передать его конструктору.

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Когда у меня есть случайный класс, как я могу получить экземпляр контекста.

Пример:

public class work()
{
    public void setValue()
    {
       var context = await _context.firstordefaultasync(....);
       context......
       //Work with that context
       ...save context...
    }
}

В этой форме я не могу создать экземпляр класса для работы сэто:

public class MyController : ControllerBase
{
    private readonly Home5Context _context;

    public TodoItemsController(Home5Context context)
    {
        _context = context;
    }
// ...
0 голосов
/ 17 октября 2019

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

Чтобы использовать Home5Context, необходимо выполнить следующие важные шаги:

Файл startup.cs

Зарегистрировать контекст с зависимостьюконтейнер для инъекций. Это компонент, который создает экземпляры контроллера и предоставляет им экземпляр вашего контекста, если он настроен правильно:

services.AddDbContext<Home5Context>(opt =>
           opt.UseInMemoryDatabase("Home5Database"));

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

Контроллер

Вставьте контекст в контроллер:

public class MyController : ControllerBase
{
    private readonly Home5Context _context;

    public TodoItemsController(Home5Context context)
    {
        _context = context;
    }

    // ...

После этого вы можете использоватьконтекст и доступ к базе данных в контроллере.


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

...