注:直接學習的.Net Core 6,此版本有沒有startup.cs相關的內容
項目Program.cs文件中 是定義項目加載 啟動的地方
//通過builder對項目進行配置、服務的加載
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();//將項目中的控制器及相關的服務注冊到容器中
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();//將Swagger相關服務注冊到容器
----------------------------------------------------------------------------------------------------
builder.Services.AddScoped<服務>();//注入目標文件,如業務層、數據訪問層文件
//調用此服務的主體一般在構造函數中添加注入方式
例:?private readonly UserOperateServices _operateService;
? ? ? ? public UserController(UserOperateServices service)
? ? ? ? {
? ? ? ? ? ? this._operateService = service;
? ? ? ? }
? ? ? ? //_operateService.Execute();
?//不使用構造注入的方式??只有在調用Test的時候,才注入MyService1,且不需要在構造函數中有
? ? ? ? [HttpGet("Testtest")]
? ? ? ? public string Test([FromServices] UserOperateServices myService1, string name)?
? ? ? ? {
? ? ? ? ? ? var names = myService1.GetNames();
? ? ? ? ? ? return string.Join(",", names) + ",hello:" + name;
? ? ? ? }
//當我們想注冊服務的時候,主要把注冊代碼放到builder.Build()之前就可以
//注冊代碼的順序不會影響程序運行的效果
var app = builder.Build();
?
--------------------------------------------------------------------------------------------------------
//在CreateBuilder方法中已經完成了配置系統的初始化,就不再需要使用service.AddOption方法來注冊選項的相關服務
builder.Host.ConfigureAppConfiguration((_, configBuilder) => { //此處下劃線是拋元,類似于占位符
? ? string connStr = builder.Configuration.GetConnectionString("configServer");//在用戶機密里的節點
? ? configBuilder.AddDbConfiguration(() => new SqlConnection(connStr));
});
//需要寫配置類和配置節點的綁定
builder.Services.Configure<SmtpOptions>(builder.Configuration.GetSection("Smtp"));//SmtpOptions是配置實體類
---------------------------------------------------------------------
EF Core 與原先的使用區別不大,因為新框架注入的需求,在使用的形式上有需要處理的部分