1.ORM对象关系映射
数据库表之间存在各种关系(一对一,一对多,多对多)
C#面向对象的语言,对象
使用C#操作数据库,从面向对象转向关系操作,存在代沟
ORM把关系表映射成对象
数据库语言
表类
记录对象
列属性
目的:让程序员以面向对象方式操作数据库
EF(实体框架Entity Framework) 就是微软的一套ORM框架
O/R Mapping
ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换
EF三种工作模式:
DataBase First:已存在一个数据库,映射出其对应的类、属、方法
Model First:建立一个模型(类图)、类、属性、方法就有了,生成数据库
Code First:通过Code,描述出类、属性、映射出数据库
2、EF有很多约定(规则)
默认配置(Role、User)
表及列默认配置,EFCode First 默认生成的表名为类名的复数形式,表的架构为dbo,列名与实体类属性名称相同。
主键约束:实体类中属性名为id或[类名]id,将作为生成表的主键,若主键为int类型,则默认为SqlServer的identity类型
string类型的属性,对应SqlServer中的nvarchar(max)类型
bool类型的属性,对应SqlServer中的bit类型
Double类型的属性,对应SqlServer中的float类型
Decimal类型的属性,对应SqlServer中的decimal类型
模型类如果存在一个属性,属性名是ID或者类名+ID,那么此
属性会映射成一个主键标识列
值类型属性生成的列不允许为空
引用类型属性允许为空
通过实体框架操作数据库需要添加引用Entity Frawork.dll /System.Data.Entity
int
从
而来,前者是后者的简写
3 一对多关系
可以通过集合导航属性,引用属性形成,二者其一既可,或者两者都加
练习:
建立Student、Course表,多对多关系,生成如下数据:
唐僧:英语数学
八戒:语文数学
Linq to object
linq to xml
linq to sql
linq to Entity
EF底层就是https://www.sodocs.net/doc/233696569.html, ,适合于中小型系统,
Code First
默认配置(Role User)
改变默认约定
如果模型变化,必须访问数据库,才能删除重建
MVC+EF
B/S模式,请求—处理—响应
作业:预习MVC
09月30日
开发B/S程序多种模式
WebFrom:设计初衷为了使程序员像开发C/S程序一样开发B/S程序
优点:门槛低,大量服务器端控件封装了HTML标签;Page生命周期封装了请求,响应过程中的很多内容
缺点:生成的页面垃圾代码多;大量的viewstate占用带宽;降低了程序员对htm的控制力;复杂的Page生命周期难以掌握
Html+AJAX+Handler:
优点:用户体验好,更能体现B/S结构程序的特点,让程序员清晰的理解请求,响应机制
缺点:开发效率低
MVC:设计初衷为了改善WebForm的缺点
优点:同上
缺点:开发效率低:发展较晚,传统公司大部分依然采用前两种方案,新项目使用MVC较多
MVC(Model-View-Controller)
将一个交互式应用程序分成3个组件
模型:包含核心功能(核心业务逻辑)
视图:向用户显示信息
控制器:处理用户输入
?每个视图都是一个继承自WebViewPage的类型,view的很多属性ViewDataViewBag Model Html都来自于WebViewPage
?视图引擎:接受控制器传递的数据,并将视图渲染成html
?向视图传递数据
●ViewData键值集合
ViewBag,可以使用属性访问的语法访问ViewData键值每一个view都是一个类型
视图引擎:(Razor)
控制器:处理用户输入
MVC原理:
4.view返回给客户端
见照片
1.MVC模型视图控制器
2.MVC WebForm https://www.sodocs.net/doc/233696569.html,
https://www.sodocs.net/doc/233696569.html,是微软提供的.net平台下开发B/S结构系统的框架
MVC和WebForm都隶属于https://www.sodocs.net/doc/233696569.html,
http://localhost:1283
添加一个控制器.名字为HomeController,
之后写代码
按F5运行,网址为http://localhost:1283/home/index,
当用户访问http://localhost:1283/home/index时,服务端有一个程序处理(Handler),会将url拆分成home和index,然后把请求转发给homeController.cs类型(控制器)的Index方法(Action)处理,Action或者直接返回结果,或者通过View(类似于html模板)呈现给客户,客户端和控制器直接沟通。
在Global.asax.cs中有默认路由也可以自定义
路由:(Route):规则,如何解释url中的内容http://localhost:1283//index不可以
http://localhost:1283/home可以
http://localhost:1283/home/index可以http://localhost:1283/home/index/aaa
第三段是参数默认值id
aaa是第三段随便给一个aaa
在homeController.cs中再添加
也可以:
也可指定视图呈现
每一个view都是一个类型
视图引擎:接受控制器传递来的数据,并将视图渲染成html Razor默认视图引擎(剃须刀的意思)
语法:用于生成HTML
HTML标记向代码的过渡时@,HTML向代码的过渡自动
通过()来明确内容
在解决方案资源管理器中的share文件夹下,右击,添加视图,改名字为FootView.cshtml
运行:
任何一个view在运行前,都会执行viewState这个视图,此视图中,会指定这个视图的布局Layout是谁,Layout布局视图相当于母版,具体视图的内容最终显示在布局视图的RenderBody()位置处
在ViewStart.cshtml中
指定了视图的布局为Layout.cshtml
在Layout.cshtml中
eg:在HomeController.cs中list
XSS跨转脚本攻击
Mvc可以从三个地方防止XSS
ValidateInput
HttpUtility.HtmlEncode()做html编码
Razor表达式默认html编码
三种重定向方式
视图布局
任何一个view在运行之前,都会先执行_ViewStart.cshtm这个视图,_ViewStart.cshtml优于任何视图的执行,此视图会指定这个视图的布局layout是谁,layout布局视图相当于母版,具体视图的内容最终会显示在布局视图的@RenderBody()位置处
声明一个产品类
如果实体类的名称和连接串的名称相同,就会自动去找连接串
Global.asax
复习:
1.MVC开发B/S结构程序一种技术
Model:描述数据和业务逻辑
View:显示界面
Controller:处理用户输入
当用户发出请求http://.../blog/index,服务端会将url拆分,根据路由规则,将请求转发给某个Controller下的Action处理.此Action可能会访问Model,进而操作数据库,将结果通过View 呈现给客户.
在Action和View间传递数据使用ViewBag,ViewData return View(batch,)这个
今日内容
HtmlHelper
Html是View父类的一个属性,类型是HtmlHelper。HtmlHelper是MVC 提供了用于生成有数据绑定的Html标签的类型。
https://www.sodocs.net/doc/233696569.html,bleFor
Html.EditorFor
Html.DropDownList
Html.BeginForm