一步一步学EF系列四【升级篇 实体与数据库的映射】
2015-09-10 11:45
309 查看
之前的三张为基础篇,如果不考虑架构问题,做一般的小程序,以足够用了。基本的增删改查也都有了。但是作为学习显然是不够的。通过之前三章的学习,有没有发现这样写有什么问题,有没有觉得繁琐的?可能有人会说,之前的三篇总共加起来代码也就几十行哪里繁琐了。呵呵,是不是觉得EF很强大。但是其实按照之前的写法的话是比较繁琐的,为什么呢?这就是本文的重点 接着往下看!!!
先看一下之前的配置类
![](http://images2015.cnblogs.com/blog/78495/201509/78495-20150910114455825-359779157.png)
回顾我们的范例是只有两张表,然后需要配置映射关系的时候在 DbContext,的OnModelCreating进行配置。但是如果有几十张而且关系比较复杂的表,如果到放到这个OnModelCreating里面去写的话会不会觉得太乱没有条理性,甚至关系都已经分不清了。
那接着就要想办法,怎么能让每个表的关系就只在一个实体关系配置类进行配置。
具体的内容往下看:
上面的内容不知道你看懂了没有,或者说我说的不清楚,解决办法就是 我们可以针对每个实体来创建一个配置类或者公用的配置类来完成关系映射的设置。那我们就开始做吧。
一、在Model下面新建了一个配置文件夹
![](http://images2015.cnblogs.com/blog/78495/201509/78495-20150910114456559-1528367293.png)
二、同时针对之前写的两个实体新建了一个配置类
![](http://images2015.cnblogs.com/blog/78495/201509/78495-20150910114457200-1498449367.png)
三、核心代码来了
以上两步动动鼠标就可以搞定。那具体的代码就在这里了。我们先来看看用户信息的映射类。
简单吧! 我们把之前OnModelCreating配置的东西就可以移到每个对应的实体中,这个类核心的地方就在于引用了EntityTypeConfiguration,那为什么要引用它呢?
下面的这句是我们第二篇里面写的代码,你鼠标放到HasKey查看引用。
调到下面这个
![](http://images2015.cnblogs.com/blog/78495/201509/78495-20150910114457840-1370254684.png)
现在知道为什么要引用EntityTypeConfiguration吧! 不引用的话 那我们在构造方法里面的配置就没法写了。
四、最后一步
修改DbContext里面的OnModelCreating方法 注释掉之前的代码。每个类改成一行代码实现。
![](http://images2015.cnblogs.com/blog/78495/201509/78495-20150910114458528-441875081.png)
五、完成
运行你的代码 是不是也是出现了之前的正确页面。
大家如果有什么不懂的可以留言,也欢迎大家指导通过进步。
先看一下之前的配置类
![](http://images2015.cnblogs.com/blog/78495/201509/78495-20150910114455825-359779157.png)
回顾我们的范例是只有两张表,然后需要配置映射关系的时候在 DbContext,的OnModelCreating进行配置。但是如果有几十张而且关系比较复杂的表,如果到放到这个OnModelCreating里面去写的话会不会觉得太乱没有条理性,甚至关系都已经分不清了。
那接着就要想办法,怎么能让每个表的关系就只在一个实体关系配置类进行配置。
具体的内容往下看:
上面的内容不知道你看懂了没有,或者说我说的不清楚,解决办法就是 我们可以针对每个实体来创建一个配置类或者公用的配置类来完成关系映射的设置。那我们就开始做吧。
一、在Model下面新建了一个配置文件夹
![](http://images2015.cnblogs.com/blog/78495/201509/78495-20150910114456559-1528367293.png)
二、同时针对之前写的两个实体新建了一个配置类
![](http://images2015.cnblogs.com/blog/78495/201509/78495-20150910114457200-1498449367.png)
三、核心代码来了
以上两步动动鼠标就可以搞定。那具体的代码就在这里了。我们先来看看用户信息的映射类。
/// <summary> /// 博客用户信息映射类 /// </summary> public class BlogUserConfiguration : EntityTypeConfiguration<BlogUser> { public BlogUserConfiguration() { //设置主键 HasKey(m => m.BlogUserId); } }
简单吧! 我们把之前OnModelCreating配置的东西就可以移到每个对应的实体中,这个类核心的地方就在于引用了EntityTypeConfiguration,那为什么要引用它呢?
下面的这句是我们第二篇里面写的代码,你鼠标放到HasKey查看引用。
modelBuilder.Entity<BlogUser>().HasKey(m => m.BlogUserId);
调到下面这个
![](http://images2015.cnblogs.com/blog/78495/201509/78495-20150910114457840-1370254684.png)
现在知道为什么要引用EntityTypeConfiguration吧! 不引用的话 那我们在构造方法里面的配置就没法写了。
四、最后一步
修改DbContext里面的OnModelCreating方法 注释掉之前的代码。每个类改成一行代码实现。
![](http://images2015.cnblogs.com/blog/78495/201509/78495-20150910114458528-441875081.png)
五、完成
运行你的代码 是不是也是出现了之前的正确页面。
大家如果有什么不懂的可以留言,也欢迎大家指导通过进步。
相关文章推荐
- mysql里筛选生日
- mysql中IFNULL()和COALESCE()函数替代null
- PD16 Generate Datebase For Sql2008R2时报脚本错误“对象名sysproperties无效”
- mysql中文乱码问题
- C# redis 系列四
- C# redis 系列三
- MongoDB位置查询
- win10 下pl/sql连接oracle
- Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(3)创建一个简单的分析
- SQL Server 存储过程
- 数据库编码的问题
- 不安装oracle客户端,pl/sql,vs链接远程oracle办法
- Mysql binlog二进制日志
- Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(2)RPD资料档案库创建
- Spring 集成redis3.0.3集群管理
- Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(1)安装
- [转]Sql按年份.月份.每天统计数量
- Centos6.5安装Redis
- mysql创建用户、删除用户、创建root用户和修改用户密码,grant分配权限,查询测试,以及库中授权表解析
- 实战 SQL Server 2008 数据库误删除数据的恢复