学习MVC之租房网站(三)-编写实体类并创建数据库

在上一篇<学习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

时间: 2024-12-25 12:02:49

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

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

在上一篇<学习MVC之租房网站(三)-编写Eneity类并创建数据库>中,记录了编写Eneity类并采用CodeFirst的方式创建数据库的过程,接下来就到了Service层的实现了,并且在开始后续工作前,首先进行充分的单元测试. 长久以来,一直为写出很多bug而苦恼,这儿用过单元测试后,惊喜地发现,这不正是保证代码质量的好方法嘛,虽然会耗费额外的时间,但决定以后要把单元测试运用到工作和学习的实践中. 一.实现Service层 1. 为了减少模块.层之间的耦合,在Service层上面增加了IS

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

在上一篇<学习MVC之租房网站(七)-房源管理和配图上传>完成了在后台新增.编辑房源信息以及上传房源配图的功能.到此后台开发便告一段落了,开始实现前台的功能,也是从用户的登录.注册开始. 前台模板使用MUI,一套用于手机端的HTML5模板,但开发期间仍然使用Chrome.FireFox等PC浏览器. 一 注册 注册要求用户输入手机号密码等信息 a) 注册的处理过程为:用户输入手机号后,给手机发送验证码,用户提供收到的验证码以及密码.确认密码,随后便可以点击注册,在浏览器进行简单的有效性校验后,

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

在上一篇<学习MVC之租房网站(十)-预约和跟单>完成了用户的预约看房以及后台操作员对预约看房的跟单操作.接下来会做定时发邮件的功能,并且用云存储进行上传图片的保存. 一 定时任务和邮件发送 a) 通过实现定时发邮件这个功能,在学习Quartz.Net的同时也能用用邮件发送.Quartz.Net支持各种各样灵活的定时配置,以天.周.月的周期都能支持.使用Quartz的时候,要涉及三个方面:IScheduler.Job和Trigger,自己写的任务作为Job,定时配置放在Trigger中,到了指

学习MVC之租房网站(十二)-缓存和静态页面

在上一篇<学习MVC之租房网站(十一)-定时任务和云存储>学习了Quartz的使用.发邮件,并将通过UEditor上传的图片保存到云存储.在项目的最后,再学习优化网站性能的一些技术:缓存和页面静态化. 使用缓存可以降低数据库的压力,而使用页面静态化则可以降低Web服务器的压力. 一 缓存 ASP.NET下可用的缓存为System.Web.Caching.Cache,保存在服务器内存中,不适用于服务器集群,虽然也用没用过集群,但现在的主流都使用NoSQL数据库来做缓存,典型的有Redis和Mem

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

在上一篇<学习MVC之租房网站(八)- 前台注册和登录>完成了前台用户的注册.登录.重置密码等功能,然后要实现与业务相关的功能,包括房源的显示.检索等. 一 房源显示 房源显示内容较多,涉及到的有House.Attachment.HousePic,处理的信息包括房屋类型.朝向.楼层.装修状态.家具等. 这里显示的房源是通过后台的房源管理维护的,后台添加房源时会上传图片.使用UEditor编辑文本,前台显示房源时也要把图片和富文本显示出来.在前台使用后台上传的图片是个问题:UEditor产生的富

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

在上一篇<学习MVC之租房网站(六)-用户登录和权限控制>完成了后台用户登录和权限控制功能的开发,接下来要完成的是房源的管理,用户在后台新增.编辑房源信息,供前台用户操作. 一 房源管理 1 房源列表的显示和删除比较常规,但事后也有一些需要注意的地方 a) 关于分页,因为很多地方都会用到,于是封装好以便统一使用. 为了保证输出的html文本能被正确渲染,使用了@Html.Raw()方法,分页信息使用ViewBag从Controller传递过来,虽然ViewBag是动态类型,但用来传递分页信息还

学习MVC之租房网站(一)-项目概况

这儿的MVC是ASP.NET MVC,只用过C#一种语言,后面就直接称呼为MVC了. 一年多没接触MVC后,现在想用MVC做个网站,觉得特别吃力,以前学的仅仅是皮毛,所以闲置了一年后,MVC知识就重新归零了. 这几周学习MVC的过程中,博客园葡萄城的MVC汇总资源给了我很大的帮助(http://www.cnblogs.com/powertoolsteam/archive/2015/08/13/4667892.html),尤其是"ASP.NET MVC 音乐商店"系列教程,学完音乐商店后

EntityFrameworkCore 根据实体类自动创建数据库

1.首先新建 Asp.Net Core WebApi 项目 2.添加一下引用 : 2.1   Pomelo.EntityFrameworkCore.MySql(我用的Mysql 根据自己情况引用就行) 2.2  Microsoft.EntityFrameworkCore 2.3 Microsoft.EntityFrameworkCore.Design 3.使项目支持dotnet ef 工具以使用Migrations 3.1 手动修改csproj文件(手动添加是因为在nuget添加Microsof

智能机器人“小昆”的实现(三)实体类的实现

在上一篇文章中,我们实现了获取服务器返回数据的工具类.没有读过的朋友可以点击下面链接: http://www.cnblogs.com/fuly550871915/p/4852568.html 这一篇文章要在上一篇的基础上,实现两个重要的实体类,一个是ChatMsg,用来封装数据从而实现标准的消息格式:一个是ResultMsg,用来封装从服务器端返回的数据. 一.准备工作 在这里,解析json字符串,我们打算使用第三方包GSON.首先点击下面的地址,下载该包. http://code.google