.net Core 学习笔记(实体字段映射,IOC注入)
https://github.com/wj1034184751/ADO.NetCore.git
先简单的做一个学习架子,
EF层用的是 EFCore(2.1.0)+ Pomelo.EntityFrameworkCore.MySql(2.1.0)
实体映射主要是用了这三个类:
public interface IEntityTypeConfiguration
{
void Map(ModelBuilder builder);
} public interface IEntityTypeConfiguration<T> : IEntityTypeConfiguration where T : class
{
void Map(EntityTypeBuilder<T> builder);
} public abstract class WGEntityTypeConfig<T> : IEntityTypeConfiguration<T> where T : class
{
public abstract void Map(EntityTypeBuilder<T> builder); public void Map(ModelBuilder builder)
{
Map(builder.Entity<T>());
}
} public static class ModelBuilderExtentcs
{
private static IEnumerable<Type> GetMappingTypes(this Assembly assembly,Type mappingInterface)
{
return assembly.GetTypes().Where(x => !x.GetTypeInfo().IsAbstract && x.GetInterfaces().
Any(y => y.GetTypeInfo().IsGenericType && y.GetGenericTypeDefinition() == mappingInterface));
} public static void AddEntityConfigurationsFromAssembly(this ModelBuilder modelBuilder,Assembly assembly)
{
var mappingTypes = assembly.GetTypes()
.Where(type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(WGEntityTypeConfig<>));
//var mappingTypes = assembly.GetMappingTypes(typeof(WGEntityTypeConfig<>));
foreach (var config in mappingTypes.Select(Activator.CreateInstance).Cast<IEntityTypeConfiguration>())
{
config.Map(modelBuilder);
}
}
}
然后在这里
接下来是简单的注入:
项目分成这几层:
BLL,DAL,EF,UI
BLL,DAL 层要实现注入可以加一个接口,IServiceSupportExten
然后
Assembly asmBLL = Assembly.Load(new AssemblyName("BLL"));
var serviceBLLTypes = asmBLL.GetTypes().Where(t => typeof(IServiceSupportExten).IsAssignableFrom(t) && !t.GetTypeInfo().IsAbstract);
foreach (var serviceType in serviceBLLTypes)
{
foreach (var interType in serviceType.GetInterfaces())
{
services.AddSingleton(interType, serviceType);
}
} Assembly asmDAL = Assembly.Load(new AssemblyName("DAL"));
var serviceDALTypes = asmDAL.GetTypes().Where(t => typeof(IServiceSupportExten).IsAssignableFrom(t) && !t.GetTypeInfo().IsAbstract);
foreach (var serviceType in serviceDALTypes)
{
foreach (var interType in serviceType.GetInterfaces())
{
services.AddSingleton(interType, serviceType);
}
}
.net Core 默认提供了一种注入方式,然后,自己也去网上找了代码写了别一种
.net Core 学习笔记(实体字段映射,IOC注入)的更多相关文章
- .net core学习笔记(3)-依赖注入
.net core 中使用了大量的依赖注入,对依赖注入一直是一知半解,总想不透,项目中用的是一个网上的开源框架,从底层到web层都是用的构造函数依赖注入. 然后了在继承ActionFilterAttr ...
- ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用
前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...
- .NET CORE学习笔记系列(2)——依赖注入【2】基于IoC的设计模式
原文:https://www.cnblogs.com/artech/p/net-core-di-02.html 正如我们在<控制反转>提到过的,很多人将IoC理解为一种“面向对象的设计模式 ...
- .NET CORE学习笔记系列(2)——依赖注入【1】控制反转IOC
原文:https://www.cnblogs.com/artech/p/net-core-di-01.html 一.流程控制的反转 IoC的全名Inverse of Control,翻译成中文就是“控 ...
- .NET CORE学习笔记系列(2)——依赖注入【3】依赖注入模式
原文:https://www.cnblogs.com/artech/p/net-core-di-03.html IoC主要体现了这样一种设计思想:通过将一组通用流程的控制权从应用转移到框架中以实现对流 ...
- Spring Framework 学习笔记——核心技术之Spring IOC
Spring Framework 官网文档学习笔记--核心技术之Spring IOC 官方文档 spring-framework-5.3.9 1. Spring Framework 核心技术 1.1 ...
- Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点
Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...
- .NET CORE学习笔记系列(2)——依赖注入[5]: 创建一个简易版的DI框架[下篇]
为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在上篇中我们介绍了Cat的基本编程模式,接下来我们就来聊聊Cat的 ...
- .NET CORE学习笔记系列(2)——依赖注入[7]: .NET Core DI框架[服务注册]
原文https://www.cnblogs.com/artech/p/net-core-di-07.html 包含服务注册信息的IServiceCollection对象最终被用来创建作为DI容器的IS ...
随机推荐
- ios开发之--为父view上的子view添加阴影
项目中碰到一个问题,在tableview的headerview里面有很一个子view,设计师的要求是在下方添加一个阴影,效果如下: 以前的实现思路就是,代码如下: 添加阴影 调用视图的 layer C ...
- k8s Ingress和ingress控制器
ingress架构图简介 我们知道service的表现形式为IP:PORT,即工作在第四层传输层(TCP/IP层),那么对于不同的URL地址经常对应用不同的后端服务或者虚拟服务器,这些应用层的转发机制 ...
- linux设备驱动程序-设备树(1)-dtb转换成device_node
linux设备驱动程序-设备树(1)-dtb转换成device_node 本设备树解析基于arm平台 从start_kernel开始 linux最底层的初始化部分在HEAD.s中,这是汇编代码,我们暂 ...
- DNS解惑之资源记录(2)
1.区域解析库 每个域都要维护一个区域解析库,而区域解析库都是由一条条的记录组成的,而每一条记录就被称为资源记录(resource record RR). 我们知道大多数域名下面都不仅仅有www服 ...
- 201871010104-陈园园 《面向对象程序设计(java)》第十周学习总结
201871010104-陈园园 <面向对象程序设计(java)>第十周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- Python查看帮助---help函数
查看所有的关键字:help("keywords") 查看所有的modules:help("modules") 单看所有的modules中包含指定字符串的modu ...
- git push origin master错误
以下错误是因为远程有的文件,本地没有,故而无法push文件到远程 $ git push origin master To git@github.com:AntonioSu/learngitWindow ...
- day30_8.9 操作系统与并发编程
一.操作系统相关 1.手工操作 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 这时候的计算机是由人为将穿孔的纸带装入输入机,控制台获取 ...
- Appium+python自动化(三)- SDK Manager(超详解)
简介 本来宏哥一开始打算用真机做的,所以在前边搭建环境时候就没有下载SDK,但是由于许多小伙伴通过博客发短消息给宏哥留言说是没有真机,所以顺应民意整理一下模拟器,毕竟“得民心者,得天下”.SDK顾名思 ...
- (day46)DOM、BOM、事件
目录 一.BOM (一)定义 (二)window对象 (三)window的子对象 (1)navigator对象 (2)screen对象 (3)history对象 (4)location对象 (5)弹出 ...