Утилизация и внедрение DbContexts с .NET Core - PullRequest
0 голосов
/ 25 мая 2019

Я знаю, что одним из способов использования контекста является оператор using .

Я использую его так же, как и в своих контроллерах

[ApiController]
public class MyController : ControllerBase
{
    [HttpPost]
    public ActionResult PostActionHere(ActionRequestClass request)
    {
        using (var context = new MyEntityFrameworkContext())
        {
         ....
         // use context here
         context.SaveChanges()
         ....
        }
    }
}

Я бы хотелчтобы начать вводить его в мой контроллер.Главным образом потому, что я думаю, что его легче читать и он более однороден с внедрением зависимостей .NET Core.

[ApiController]
public class MyController : ControllerBase
{
    private MyEntityFrameworkContext _myDb;

    public MyController(MyEntityFrameworkContext myDb)
    {
        _myDb = myDb;
    }

    [HttpPost]
    public ActionResult PostActionHere(ActionRequestClass request)
    {
     ....
     // use context here
     _myDb.SaveChanges()  
     ....      
    }
}

В моем startup.cs :

public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyEntityFrameworkContext >(options => 

 options.UseSqlServer(Configuration.GetConnectionString("MyEntityFrameworkDatabase")));
}

Меня беспокоит то, что, впрыскивая его, я теряю свойства утилизации, которые поставляются с заявлением using.Это правда?Не стесняйтесь предлагать альтернативные подходы.

1 Ответ

1 голос
/ 25 мая 2019

впрыскивая его, я теряю свойства удаления, которые идут с оператором использования.Это правда?

Нет:

Метод расширения AddDbContext по умолчанию регистрирует типы DbContext с ограниченным временем жизни.

Настройка DbContext

И когда заканчивается область действия (здесь HttpRequest), объект Scoped Lifetime будет удален.

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