프로젝트에 IoC를 포함시키고 컨트롤러에 구성 개체를 삽입해야한다는 것이 가장 좋은 방법이라고 생각합니다. 컨트롤러의
예제 코드 :
public class YourController : Controller
{
private IConfigService _configService;
//inject your configuration object here.
public YourController(IConfigService configService){
// A guard clause to ensure we have a config object or there is something wrong
if (configService == null){
throw new ArgumentNullException("configService");
}
_configService = configService;
}
}
이 구성 객체에 대해 단일 범위를 지정하기 위해 IOC의를 구성 할 수 있습니다. 이 패턴을 모든 컨트롤러에 적용해야하는 경우 기본 컨트롤러 클래스를 만들어 코드를 다시 사용할 수 있습니다.
귀하의 IConfigService
public interface IConfigService
{
string ConfiguredPlan{ get; }
}
귀하의 ConfigService :
public class ConfigService : IConfigService
{
private string _ConfiguredPlan = null;
public string ConfiguredPlan
{
get
{
if (_ConfiguredPlan == null){
//load configured plan from DB
}
return _ConfiguredPlan;
}
}
}
이 클래스는 쉽게 연결 문자열, 기본 제한 시간, 같은 더 구성을 포함하도록 확장되어
- ... 우리는있어
- 컨트롤러 클래스에 인터페이스를 전달하면 유닛 테스트 중에이 객체를 모의하기가 쉽습니다.
**하지만 모든 작업에 대한 계획을 세우기 위해 DB 로의 왕복 이동을 원하지 않습니다. ** 아래의 접근 방식은 각 작업에 대한 db 호출을 만들려고합니다. 맞습니까? –
@PKKG : 한 번만로드되는지 확인하는 검사가 있습니다. –
@Khanh : 그것은 데이터의 메모리가 아니라 인터페이스의 메모리입니다. 권리 ? 그래서 각각의 요청은 db –