通过映射自动产生SQL语句
https://www.cnblogs.com/miro/p/4053473.html
学完本篇文章,你将会掌握基于EF数据模型的完整开发流程。
本次将会完成EF数据模型的搭建和使用。
基于这个模型,将之前的示例添加数据库盘问验证成果。
文章提纲概述 & 要点
详细法式
总结
概述 & 要点下面是本文要点,正文部分会有详细介绍。
EF架构图
新建基于EF的Data Model的约定
关于ORM的重要观点,和传统方法开发的区别
EF开发的整体过程
详细法式
新建文件夹,规划好代码摆放位置
创建相关类 (Data Model)
创建 Database Context
创建Initializer, 使用EF初始化数据库,插入示例数据
完成数据库盘问验证
新建文件夹,规划好代码摆放位置
根目录下新建一个 ViewModels文件夹。
Models文件夹里面存放对应于数据库表的实体。
View中需要显示的数据和Models中实体模型不必然能对应上, 因此需要专门给View使用的自界说数据模型,我们称之为ViewModel , 放在ViewModels文件夹里面。
根目录下新建一个DAL 文件夹。
DAL 安排数据访谒相关类。
NOTE 本文中放AccountContext.cs, AccountInitializer.cs
为了越发贴近真实情况,我们针对用户成立三个相关的类。
SysUser, SysRole, SysUserRole
这是用户权限打点RBAC (Role – Based Access Control)的一个范例模型, 更庞大的模型都可以在这个根本长进行扩展。
OK,下面我们就开始新建这个模型。
我们先去网上找个大抵的关系图做参考,打开百度,输入 user role , 搜索图片。
挑一个类似的做参考。
NOTE 权限相关是系统打点领域的,不涉及具体业务,我起名字的时候都加了Sys前缀,这样和业务区离隔来。
参考上面这个图成立 Data Model
SysUser Entity
SysRole Entity
SysUserRole Entity
对付上面几个类的约定和说明:
EF生成数据库时,ID 属性将会成为主键。(约定:EF默认会将ID或classnameID生成主键, MSDN建议连结气势派头的一致性, 都用ID或classnameID, 我们这里都用ID)
EF 生成数据库时 , <navigation property name><primary key property name>这种形式的会成为外键. ( 约定 )
例如外键 SysUserID = SysUser(navigation property)+ID(SysUser的主键)
界说为virtual的几个属性是 navigation 属性(virtual非必需, 只是惯例用法, 后面文章将会讲解用virtual的好处).
navigation 属性生存着其他的关联entity(entities)
示例中, SysUser和SysUserRole是一对多的关系, SysRole和SysUserRole也是一对多的关系.
如果是 "多", 属性类型就必需是list( 这里用的是Icollection )
创建 Database Context前置条件:安置EF
打开 工具à库措施承打点器à措施承打点器控制台
输入 install-package entityframework
去MSDN上检察下EF的架构图:
从上图可以看出,EF框架在底层是通过挪用ADO.NET来实现数据库操纵的。
多转一道弯性能和灵活性必定会受到影响,所以本系列文章结束后同样也会给出MVC+ADO.NET的方案,大家可以按照需要选择。
NOTE
微软官方推出的ORM框架主要有Linq to SQL和Entity Framework.
EF是目前最新的,也是保举共同MVC使用的框架。
实际操纵前再增补一些重要观点:
如果不用ORM框架,我们一般这样来使用ADO.NET进行数据库开发:
将ADO.NET对数据库的操纵封装到一个类里SqlHelper中
在DAL层挪用SqlHelper
其他层再挪用DAL进行数据库操纵
使用ORM之后,以前面的SysUser为例:
O(Object) à 措施中的类 SysUser, 就是东西
R (Relation)à 数据库中的表
M(Mapping)à O和R的映射关系
ORM对传统方法的改造:
充当桥梁,实现了关系数据和东西数据的映射,通过映射自动孕育产生SQL语句。
对常用的操纵,节省了写SQL语句的法式。
好了,此刻须要的观点应该理解了吧,下面我们就进行实际的操纵了。
创建类 AccountContext.cs , 让他担任自System.Data.Entity.DbContext, 我们用这个类完成EF的成果。
主要做下面三件事:
为每个entity set创建一个DbSet
在EF中,凡是情况下一个entity set对应数据库中的一张表,一个entity对应表中的一行。
指定一个连接字符串
结构函数中的 base("AccountContext") 。
默认情况下和类名一样,即AccountContext,我们显式的给他指定出来。
指定单数形式的表名
>();
默认情况下会生成复数形式的表,如SysUsers
NOTE 表名用单复数形式看各自的习惯,没有明确的规定。有的公司表名全用单数,有的公司按照表的意思,有单数也有复数。
共同上面第2点,先把web.config中连接字符串给指定了。
如下图,贴着appSettings配置节上面添加。注意要web.config中要加上红字部分,不然会堕落。
<connectionStrings>
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30626.html