ASP.net EF动态映射实体
1、配置EF与建立实体模型这里不做过多介绍、主要介绍如何动态映射实体模型
1.1、实现过程有很多种方式我们这里使用接口、然后扫描所有继承了该接口的实体类然后映射(也可以自行扩展使用特性)
首先我们新建一个接口:如下
接口是一个空接口主要起到标识作用需要扩展功能自己可以进行研究
1.2、然后我们在Mysqlbase类中重写OnModelCreating方法具体如下:
附上代码:
// OnModelCreating protected override void OnModelCreating(ModelBuilder modelBuilder) { foreach (var item in ReflectionHelper.CreateAllInstancesOf<ModelsInterface>()) { modelBuilder.Model.AddEntityType(item); } base.OnModelCreating(modelBuilder); }
然后这里使用到了ReflectionHelper.CreateAllInstancesOf<ModelsInterface>()这个方法的定义如下、作用就是获取Type实例
附上代码:
public class ReflectionHelper { public static IEnumerable<Type> CreateAllInstancesOf<T>() { return typeof(ReflectionHelper).Assembly.GetTypes() //获取当前类库下所有类型 .Where(t => typeof(T).IsAssignableFrom(t)) //获取间接或直接继承t的所有类型 .Where(t => !t.IsAbstract && t.IsClass); //获取非抽象类 排除接口继承 //.Select(t => (T)Activator.CreateInstance(t)); //创造实例,并返回结果(项目需求,可删除) } }
至此就完成了