一步一步学EF系列四【升级篇 实体与数据库的映射】
之前的三张为基础篇,如果不考虑架构问题,做一般的小程序,以足够用了。基本的增删改查也都有了。但是作为学习显然是不够的。通过之前三章的学习,有没有发现这样写有什么问题,有没有觉得繁琐的?可能有人会说,之前的三篇总共加起来代码也就几十行哪里繁琐了。呵呵,是不是觉得EF很强大。但是其实按照之前的写法的话是比较繁琐的,为什么呢?这就是本文的重点 接着往下看!!!
先看一下之前的配置类

回顾我们的范例是只有两张表,然后需要配置映射关系的时候在 DbContext,的OnModelCreating进行配置。但是如果有几十张而且关系比较复杂的表,如果到放到这个OnModelCreating里面去写的话会不会觉得太乱没有条理性,甚至关系都已经分不清了。
那接着就要想办法,怎么能让每个表的关系就只在一个实体关系配置类进行配置。
大家也可以加入QQ群进行交流(435498053)。
作者:STONE刘先生 出处:http://www.cnblogs.com/liupeng/
本文版权归作者和博客园共有,欢迎转载。未经作者同意下,必须在文章页面明显标出原文链接及作者,否则保留追究法律责任的权利。
如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
具体的内容往下看:
上面的内容不知道你看懂了没有,或者说我说的不清楚,解决办法就是 我们可以针对每个实体来创建一个配置类或者公用的配置类来完成关系映射的设置。那我们就开始做吧。
一、在Model下面新建了一个配置文件夹

二、同时针对之前写的两个实体新建了一个配置类

三、核心代码来了
以上两步动动鼠标就可以搞定。那具体的代码就在这里了。我们先来看看用户信息的映射类。
/// <summary>
/// 博客用户信息映射类
/// </summary>
public class BlogUserConfiguration : EntityTypeConfiguration<BlogUser>
{
public BlogUserConfiguration()
{
//设置主键
HasKey(m => m.BlogUserId);
}
}
简单吧! 我们把之前OnModelCreating配置的东西就可以移到每个对应的实体中,这个类核心的地方就在于引用了EntityTypeConfiguration,那为什么要引用它呢?
下面的这句是我们第二篇里面写的代码,你鼠标放到HasKey查看引用。
modelBuilder.Entity<BlogUser>().HasKey(m => m.BlogUserId);
调到下面这个

现在知道为什么要引用EntityTypeConfiguration吧! 不引用的话 那我们在构造方法里面的配置就没法写了。
四、最后一步
修改DbContext里面的OnModelCreating方法 注释掉之前的代码。每个类改成一行代码实现。

五、完成
运行你的代码 是不是也是出现了之前的正确页面。
大家如果有什么不懂的可以留言,也欢迎大家指导通过进步。
大家也可以加入QQ群进行交流(435498053)。
作者:STONE刘先生 出处:http://www.cnblogs.com/liupeng/
本文版权归作者和博客园共有,欢迎转载。未经作者同意下,必须在文章页面明显标出原文链接及作者,否则保留追究法律责任的权利。
如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
一步一步学EF系列四【升级篇 实体与数据库的映射】的更多相关文章
- 一步一步学EF系列【4、升级篇 实体与数据库的映射】live writer真坑,第4次补发
前言 之前的几篇文章,被推荐到首页后,又被博客园下了,原因内容太少,那我要写多点呢,还是就按照这种频率进行写呢?本身我的意图这个系列就是想已最简单最容易理解的方式进行,每篇内容也不要太多,这样初学者容 ...
- 一步一步学EF系列【5、升级篇 实体与数据库的映射】live writer真坑,第4次补发
前言 之前的几篇文章,被推荐到首页后,又被博客园下了,原因内容太少,那我要写多点呢,还是就按照这种频率进行写呢?本身我的意图这个系列就是想已最简单最容易理解的方式进行,每篇内容也不要太多,这样初学者容 ...
- 一步一步学EF系列3【升级篇 实体与数据库的映射】
之前的三张为基础篇,如果不考虑架构问题,做一般的小程序,以足够用了.基本的增删改查也都有了.但是作为学习显然是不够的.通过之前三章的学习,有没有发现这样写有什么问题,有没有觉得繁琐的?可能有人会说,之 ...
- 一步一步学EF系列【6、IOC 之AutoFac】
前言 之前的前5篇作为EF方面的基础篇,后面我们将使用MVC+EF 并且使用IOC ,Repository,UnitOfWork,DbContext来整体来学习.因为后面要用到IOC,所以本篇先单独先 ...
- 一步一步学EF系列 【7、结合IOC ,Repository,UnitOfWork来完成框架的搭建】
前言 距离上一篇已经有段时间了,最近这段时间赶上新项目开发,一直没有时间来写.之前的几篇文章,主要把EF的基础都讲了一遍,这批文章就来个实战篇. 个人在学习过程中参考博客: Entity Framew ...
- 一步一步学EF系列一【最简单的一个实例】
整个文章我都会用最简单,最容易让人理解的方式给大家分享和共同学习.(由于live Writer不靠谱 又得补发一篇) 一.安装 Install-Package EntityFramework 二.简单 ...
- 一步一步学EF系列2【最简单的一个实例】
整个文章我都会用最简单,最容易让人理解的方式给大家分享和共同学习.(由于live Writer不靠谱 又得补发一篇) 一.安装 Install-Package EntityFramework 二.简单 ...
- 一步一步学EF系列三【数据迁移】
我们每篇的内容都不多,所以希望在学习的过程中最后能亲自敲一下代码 这样更有利于掌握. 我们现在接着上篇的例子,我们现在给随便的表增加一个字段 CreateTime 创建日期 运行一下 看看会怎么样 修 ...
- 一步一步学EF系列1【Fluent API的方式来处理实体与数据表之间的映射关系】
EF里面的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面,还有一个就是F ...
随机推荐
- BT下载会损害硬盘吗
简而言之,这个问题是否存在,取决于网络带宽的发展速度与硬件性能的发展速度.如果硬件发展的速度快, 网络带宽速度发展慢,那么对大多数人而言,当前的硬件在慢速的带宽下载BT不会造成任何的硬盘损坏. ...
- Linux下Vi/Vim的使用方法
本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特 ...
- WTL:下载、安装、初见
简介 WTL: Windows Template Library 基于ATL对Win32 API的封装 C++库,用于开发Windows应用程序和UI组件 WTL功能不如MFC完善,但比MFC更小巧更 ...
- WPF 纯代码生成界面(不使用XAML)
对于编写 WPF 应用程序,只是用代码进行开发而不使用任何 XAML 不是常见的方式(但是仍然完全支持).只使用代码进行开发的明显缺点是,有可能会使用编写 WPF 应用程序成为极端乏味的工作. WPF ...
- DecimalFormat 四舍五入Float类型的坑
今天又踩了一个坑,使用DecimalFormat来完毕四舍五入.可是传入的是float类型,几轮測试才发现一个问题,传入的float会被转为double类型.大家都知道float是4位,double是 ...
- php 实现Iterator 接口
<?php class MyIterator implements Iterator{ private $var = array(); public function __construct($ ...
- c++11 lambda(了解)
this->send_change_equip = ([this](ChangeEquipPT channge) { send_cmd(s2c_change_equip, &channg ...
- 五 Android Studio打包Eegret App (包名和签名,打出正式包)
一 定义包名 如下图,在AndroidManifest.xml中的package就是包名 二 创建keystore 选择Build->Generate Signed APK 选择create n ...
- GIF动画录制工具(写教程时用的比较小巧的gif工具)
1 软件小巧实用,只有1m 2 gif效果还可以 3 绿色,无需安装 很多地方能下载,百度就行. 下载地址: http://www.downxia.com/downinfo/41427.html
- LAMP集群项目五 nfs分发文件到服务器
前边已经配置了免密钥登录,现在脚本直接调用scp即可 ./etc/init.d/functions ] then echo “argv is not correct” exit fi for ip i ...