在上一篇<学习MVC之租房网站(二)-框架搭建及准备工作>中,搭建好了项目框架,并配置了EF、Log4Net和进程外Session。接下来会编写Eneity类并采用CodeFirst的方式创建数据库。

一、数据库表结构举例

1. 在按照CodeFirst方式编写Entity类之前,仍然是需要先搞清楚数据库的表结构。首先肯定会有用户、管理员、角色、权限等相关的表,然后针对租房的特殊场景,还有房屋、房屋家电配置、房子所在的地址包括城市和区域等。

2. 这里面有两张表比较特殊,T_Settings和T_IdNames:

T_Settings用于储存运行所需的配置项,这些以往都是保存在Web.Config中的。

T_IdNames用于集中保存一些类似键值对的选项,比如房子的户型会有一室一厅、一室两厅等,装修状态会有精装、简装、毛坯等状态,这一类的选项如果都单独建一张表,表的数量会比较多,就全部集中到T_IdNames中了。

3. 表与表之间有各种关联关系,典型的如用户、角色、权限的关联,还有房子与装修状态、房子与房屋配置等的关联。


二、创建Entity类

1. 明确了数据表结构后,就可以按照表结构创建Entiy了:

这里有个特殊的BaseEntity,不会与数据库中的某张表对应,而是抽取了所有表都会有的一些公用属性,比如ID,Name等

而且,这儿用到了属性的默认赋值,这个也是较新的语法,上次说??是7.0的语法有人质疑,这个为属性赋默认值的写法也不确定是那个版本了。

实体之间互相引用时,要使用Virtual修饰,PermissionEntity引用RoleEntity便是如此,因为这样才可以使用EF的延迟加载


2. 用FluentAPI配置实体

实体的配置有两种方法,一种是用加标签的方式

比如这样,设置Msg属性的最大长度为50;

还有一种就是将会使用的FluentAPI,这种方式便于集中配置,更受欢迎。

对PermissionEntity的配置如下:

​这样生成数据表时就会按照配置来设置表的名称、字段的最大长度、是否可空等。


三、生成数据库

将每个实体对应的的配置都写好,运行项目,就会自动创建数据库了。EF默认会一直跟踪并自动维护实体和数据表对应关系的变化(通过dbo. __MigrationHistory),这儿不需要这样做,关闭这个功能,通过在DbContext的构造函数中设置Database.SetInitializer<ZszDBContext>(null)。

注:

课程内容来自如鹏网(www.rupeng.com),专注于大学生就业的在线教育平台;

ASP.NET MVC课程 http://www.rupeng.com/News/9/640.shtml

学习MVC之租房网站(三)-编写实体类并创建数据库的更多相关文章

  1. 学习MVC之租房网站(四)-实现Service层并进行单元测试

    在上一篇<学习MVC之租房网站(三)-编写Eneity类并创建数据库>中,记录了编写Eneity类并采用CodeFirst的方式创建数据库的过程,接下来就到了Service层的实现了,并且 ...

  2. 学习MVC之租房网站(二)-框架搭建及准备工作

    在上一篇<学习MVC之租房网站(一)-项目概况>中,确定了UI+Service的“双层”架构,并据此建立了项目 接下来要编写Common类库.配置AdminWeb和FrontWeb 一.编 ...

  3. 学习MVC之租房网站(五)-权限、角色、用户管理

    在上一篇<学习MVC之租房网站(四)-实现Service层并进行单元测试>中,记录了实现Service层并进行单元测试的过程,接下来该到"正题"-MVC了,也就是UI层 ...

  4. 学习MVC之租房网站(八)- 前台注册和登录

    在上一篇<学习MVC之租房网站(七)-房源管理和配图上传>完成了在后台新增.编辑房源信息以及上传房源配图的功能.到此后台开发便告一段落了,开始实现前台的功能,也是从用户的登录.注册开始. ...

  5. 学习MVC之租房网站(十)-预约和跟单

    在上一篇<学习MVC之租房网站(九)-房源显示和搜索>完成了房源的显示.检索,然后是用户的预约看房,以及后台操作员对预约看房的跟单操作. 预约看房仅有将预约信息保存到对应表的操作,预约表有 ...

  6. 学习MVC之租房网站(十一)-定时任务和云存储

    学习MVC之租房网站(十一)-定时任务和云存储 在上一篇<学习MVC之租房网站(十)-预约和跟单>完成了用户的预约看房以及后台操作员对预约看房的跟单操作.接下来会做定时发邮件的功能,并且用 ...

  7. 学习MVC之租房网站(六)-用户登录和权限控制

    在上一篇<学习MVC之租房网站(五)-权限.角色.用户管理>完成了权限.角色.用户的增删改查,现在将基于前面完成的内容,进行后台用户登录和权限控制功能的开发. 一.用户登录 用户登录涉及到 ...

  8. 学习MVC之租房网站(七)-房源管理和配图上传

    在上一篇<学习MVC之租房网站(六)-用户登录和权限控制>完成了后台用户登录和权限控制功能的开发,接下来要完成的是房源的管理,用户在后台新增.编辑房源信息,供前台用户操作. 一 房源管理 ...

  9. 学习MVC之租房网站(九)-房源显示和搜索

    在上一篇<学习MVC之租房网站(八)- 前台注册和登录>完成了前台用户的注册.登录.重置密码等功能,然后要实现与业务相关的功能,包括房源的显示.检索等. 一 房源显示 房源显示内容较多,涉 ...

随机推荐

  1. wamp下安装php的xdebug调试的方法

    wamp下安装php的xdebug调试的方法 将下载好的php_xdebug-2.1.2-5.2-vc6.dll放在D:/wamp/php/ext/php_xdebug-2.1.2-5.2-vc6.d ...

  2. javascript string对象方法总结

    1.anchor() 用于创建html锚,也就是a标签,()中可以带参数,是a标签的name属性值. var string="hello world"; document.writ ...

  3. 中药饮片ERP案例

    企业简介 [规模] 苏州市天灵中药饮片有限公司成立于2002年,为苏州首家中药饮片GMP认证企业.公司品牌“李良济”首创于1914年民国初,祖传三代,为中华老字号企业.目前,公司经营主要分为三大块:中 ...

  4. tp框架的详细介绍,tp框架基础

    php框架 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一 ...

  5. Asp.Net 常用工具类之Office-文档操作(6)

    文档一直是老大难问题,君不知,代码用时方恨少!有一套成熟的文件帮助类能很大程度上减少寻找各种资料的时间. 记得以前做一个业务,需要导出协议,一份可编辑,一份不可编辑.那么Word和PDF是最好的选择, ...

  6. 算法模板——LCA(最近公共祖先)

    实现的功能如下——在一个N个点的无环图中,共有N-1条边,M个访问中每次询问两个点的距离 原理——既然N个点,N-1条边,则说明这是一棵树,而且联通.所以以1为根节点DFS建树,然后通过求两点的LCA ...

  7. swift -- 静态变量static

    import UIKit class ViewController: UIViewController {     //静态变量  swift中的static静态变量,只能在这里声明,不能在方法中声明 ...

  8. Java容器源码解析之——ArrayList

    public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess ...

  9. ImportError: No module named cv2 解决方法

    ImportError: No module named cv2 解决方法   import cv2时会出现这个问题 解决方法:将openCV安装目录里的python文件夹内的cv2.pyd复制到Py ...

  10. Octave Tutorial(《Machine Learning》)之第一课《数据表示和存储》

    Octave Tutorial 第一课 Computation&Operation 数据表示和存储 1.简单的四则运算,布尔运算,赋值运算(a && b,a || b,xor( ...