在上一篇<学习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. 第23篇 js快速学习知识

    前面说了js的一些高级方面的基础知识,这些都是比较容易出错的和比较难理解的东西,除了这些之外其它的知识都比较简单了,基础学好了,扩展起来就是小意思.今天说说js方面可以快速学习和入门的知识. 1.闭包 ...

  2. 学好UI你必须要掌握这些技术

    转自:http://blog.sina.com.cn/s/blog_15da22ed10102x0gx.html ui设计现在已经是设计行业中的瞩目之星,无论在PC端.移动端还是游戏上都是大放异彩. ...

  3. mfc---CFileFind

    使用CFileFind实现在指定路径下,查找指定类型文件 CFileFind.FindFile(FilePath + "\\*.*"),成功返回true,否则返回false CFi ...

  4. java之重定向与转发

    昨天搞了一个问题,关于手机返回按钮的(Android机,ios没有返回键) 在每一步操作都要进过鉴权,如果鉴权不通过就需要跳转到指定jsp页面,再进行link:到app进行登录操作: 然后问题出现了, ...

  5. 转换器2:ThinkPhp模板转Django模板

    前天写了个<ThinkPhp模板转Flask模板> 居然被同事鄙视了,原因是他用Django,我用Flask,为了避免被他继续安利Django的强大.我决定写一个Django模板转换器. ...

  6. Tyvj P1813 [JSOI2008]海战训练

    P1813 [JSOI2008]海战训练 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 为了准备高层峰会,元首命令武装部队必须处于高度戒备.警察将监视每一条 ...

  7. Java向上转型的意义

    比如我这个程序 public class Testjava{ public static void main(String args[]) { fun(new Student()); fun(new ...

  8. CoreAnimation 变换

    CoreAnimation 变换 CoreAnimation 目录 博客园MakeDown支持不佳,如有需要请进GitHub 本片博客主要内容: 仿射变换 - CGAffineTransform 3D ...

  9. windows python flask上传文件出现IOError: [Errno 13] Permission denied: 'E:\\git\\test\\static\\uploads'的解决方法

    在浏览器中输入时,出现IOError: [Errno 13] Permission denied: 'E:\\git\\test\\static\\uploads' http://127.0.0.1: ...

  10. JS 拖动DIV 需要JQUERY 支持

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...