.netCore+Vue 搭建的简捷开发框架 (5)
标记1 的部分,是关于EF,以及DbContext 的相关引用,这里涉及到一个AddDbContextPool的概念,我个人的理解就是可以把他当成我们使用ADO.net 时的数据库连接池。
另外需要说明的一点就是,采用AddScoped 的方式,整个数据库链接的上下文,在整个请求过程中,只会被实例化一次。
标记2的部分,时我们对仓储的基础类,和服务层基础类的引用,注意这些基础类是泛型的方式,所以引用的时候,需要采用泛型的方式来实现。在这个地方,刚开始的时候,不知道AddScoped支持泛型的方式,还写过一个工厂类来进行注入。
剩下的方法,services.RegisterAssembly 其实是一个比较巧妙的方式,为了避免每写一个service、repository就在ConfigureServices中注入一次。所以在这里采用了反射的机制。利用反射和我们的约定,将整个程序集中的Service和Repository进行一个引用。
webAPI工程下新建一个ServiceExtension目录,并添加RuntimeHelper类和ServiceExtension。
如下图:
代码如下:


这样类似的代码网上挺多的。大家可以参考借鉴一下。另外这个地方其实不用太过于关心反射带来的性能问题,因为只有在程序启动的时候,加载一次。
仓储层和服务层都注入进来以后,接下来就是怎么去使用了。
来一起看一下我们是怎么在ValuesController里面进行实现的。
1.定义服务层接口
2.在ValuesController初始化的时候,将服务层接口注入进来。
3.使用接口,调用数据。
代码如下:

关于ReadAllAd()方法,之前的章节中已经有过描述。
调用成功,说明框架的整体流程已经跑通了!晚上加个鸡腿,庆祝一下!
按照之前的脑图,不知道大家还记得不?
红框里面的内容,到这一节,基本就结束了。接下来,会逐步的丰富我们的框架。加入日志,异常处理,权限验证。以及其他脑图中列出来的内容。
希望整个过程对于想学习、了解netCore 的同学们有所帮助!
源码已经更新:https://github.com/xzhencheng/Sincere.Core
最近又要离职了。心情比较复杂!可能更新不及时。还望海涵!https://www.cnblogs.com/xuzhencheng/p/11698132.html