标签:举例 mis 默认值 延迟 之间 gic atm 方法 功能
在上一篇<学习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
标签:举例 mis 默认值 延迟 之间 gic atm 方法 功能
原文地址:http://www.cnblogs.com/zhixin9001/p/6715797.html