ASP.net EF动态映射实体
2024-09-08 17:44:06
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)); //创造实例,并返回结果(项目需求,可删除)
}
}
至此就完成了
最新文章
- ASP.NET MVC 3 网站优化总结(一) 使用 Gzip 压缩
- JSP分页显示
- WCF传输大数据的设置2
- WebApi系列~自主宿主HttpSelfHost的实现
- BroadcastReceive之ip拨号
- Cadence Allegro元件封装制作流程
- 获取ip的ip138.com
- 设计模式之---模板方法template method的使用
- hdu2175汉诺塔IX
- MaltReport2:基于 OpenDocument/OpenOfficeXML 的报表引擎
- VUE之图表操作
- 为什么Java的main方法必须是public static void?
- Delphi Sysem.JSON 链式写法(转全能中间件)
- SQL Server T—SQL 学生选课数据库SQL语句考试题(45道题)
- (转)面向对象——UML类图设计
- 【SQLSERVER】处理一对多标签的语法糖
- xpath定位中详解id 、starts-with、contains、text()和last() 的用法
- nginx高性能webserver具体解释(1)--安装nginx
- 手把手教你学node.js之学习使用外部模块
- js:关闭当前页面