ASP.Net Core로 이동하기 전에 Ninject
을 사용하여 일반적인 방식으로 내 엔터티 프레임 워크 데이터베이스 컨텍스트를 삽입 할 수있었습니다. 예를 들면 다음과 같습니다 AddDbContext
를 사용하는 경우 다음과 같은 처리를 할 경우 ASP.Net 코어 MVC에서ASP.Net Core MVC : 기본 유형별 종속성 삽입
Bind<DbContext>().To<MyActualDbContext>();
는, 그것이 해결되지 않은되는 서비스가 발생합니다.
AddDbContext<MyActualDbContext>(x=> x.UseSqlServer("..."));
---
public class TestController: Controller {
public DbContext Db {get; private set;}
public TestController(DbContext Db){
this.Db = Db;
}
}
내가 AddDbContext
특별히 EF 데이터 컨텍스트를 처리하는 데 사용하도록 개발 되었기 때문에 나는, 그러나, AddSingleton
또는 AddScoped
를 사용을 통해이 문제를 해결할 수 있다는 것을 알고, 나는 어떤 방법이 있는지 알고 싶습니다 그 방법을 사용하여 이것을 달성하십시오.
AddDbContext
이이 동작을 지원하지 않는 경우 어떤 대체 방법이 더 좋을지 AddSingletone
또는 AddScoped
? 나는 AddScoped
가 요청 당 한 번 서비스를 인스턴스화하지만, Singleton이 잠재적 인 문제를 일으키는 지 여부를 알고 싶다. 이 두 메서드를 사용하면 ED DbContext의 경우 단점이 발생하지 않도록하고 싶습니다. 기본 클래스는 당신이 그것을 사용할 수 있도록 중 DbSets있어이 없기 때문에
DbContext에는 "Set <>, Add <>, Entity <> 등과 같은 메서드가 있습니다. db를 일반적인 방법으로 사용할 수 있습니다. 동일한 db에 대해 서로 다른 컨텍스트가 있다고 가정합니다. – Arrrr
'AddTransient'는 (EF의 추적 메커니즘 때문에) 좋은 생각이 아닙니다. – Arrrr
이 경우에는 객체의 수명이'AddDbContext'를 통해 제어되기 때문에 문제가되지 않습니다. 범위로 등록 할 때'provider => provider.GetRequiredService()'는'services.AddScoped (provider => provider.GetRequiredService
Tseng