services.AddDbContext<FonourDbContext>(options => options.UseNpgsql(sqlConnectionString), ServiceLifetime.Transient); services.AddDbContext<FonourDbContext>(options => options.UseNpgsql(sqlConnectionString), ServiceLifetime.Scoped); services.AddDbContext<FonourDbContext>(options => options.UseNpgsql(sqlConnectionString), ServiceLifetime.Singleton);
对于要依赖注入的接口和对象提供AddTransient、AddScoped、AddSingleton三个方法控制对象声明周期。
5 测试我们在Fonour.MVC项目的LoginController中增加一个IUserAppService服务对象的定义,同时提供LoginController的构造函数,在构造函数中实现对UserAppService服务的依赖注入。
在Index控制器中增加IUserAppService的用户检查方法的调用代码,增加一个断点,用于测试。
public class LoginController : Controller { private IUserAppService _userAppService; public LoginController(IUserAppService userAppService) { _userAppService = userAppService; } IActionResult Index() { , ); return View(); } }
运行程序,进入断点,发现已经成功根据用户名和密码,把上一节创建的用户数据信息取出,至此,我们项目的分层之间通道已经打通。
6 总结本节主要涉及到Asp.Net Core的知识点是它的依赖注入机制,我们通过清晰多项目分层结构,采用依赖注入机制,实现了各通之间的连接。
下一节实现用户登录相关,主要有用户登录验证,以及用户对控制器Action路由访问的拦截及判断。