北大青鸟深圳嘉华_EntityFramework
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} if (entities.SaveChanges() > 0){ } }
演示示例4:使用EF修改数据
15/43
使用EF删除数据
使用EF删除数据的基本步骤
1、从DbContext获取实体
2、使用DbSet<T>的Remove()方法
3、使用DbContext 的SaveChanges()方法
public MySchoolEntities() : base("name=MySchoolEntities")
{ } public DbSet<Admin> Admins { get; set; } public DbSet<Grade> Grades { get; set; } public DbSet<Result> Results { get; set; } public DbSet<Student> Students { get; set; } public DbSet<Subject> Subjects { get; set; } public DbSet<Teacher> Teachers { get; set; } }
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
} if (entities.SaveChanges() > 0) { } }
演示示例5:使用EF删除数据
16/43
视图引擎简介
视图引擎-把视图解析成浏览器可执行的代码
独立的视图解析API 对应不同的视图语法规则
ASP.NET MVC 视图引擎
支持自由扩展
17/43
Razor视图引擎
Razor视图引擎-更简洁优雅的视图
母版视图
初始化
Razor视图特征:@ 符号 和 cshtml 文件扩展名
演示示例6:创建Razor视图项目
18/43
Razor母版视图
_Layout.cshtml文件结构
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
导航属性(关系)
public virtual Grade Grade { get; set; }//年级 public virtual ICollection<Result> Results { get; set; }//成绩
}
10/43
示例
学生数据库数据上下文类
public partial class MySchoolEntities : DbContext {
@using 命名空间
Razor视图语法规则5-5
示例 @using RazorDemo.Models
语法
注释
@* 被注释的内容 ቤተ መጻሕፍቲ ባይዱ@
Razor普通视图
普通视图文件结构
@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml";
}
@section scripts{ <script type="text/javascript">
</script> }
</connectionStrings>
7/43
实体数据模型的项目结构
实体数据模型
EDM元数据文件 数据上下文类 实体类
8/43
EDM设计器模式和XML结构
EDM元数据
9/43
示例
学生实体类
实体类
public partial class Student {
public Student() {
示例
using (MySchoolEntities entities = new MySchoolEntities()) {
Student stu = entities.Students.FirstOrDefault( s => s.StudentName == "百福美");
if (stu != null){ entities.Students.Remove(stu);//从集合中删除学生对象
ORM 框架
3/43
Entity Framework 体系结构
Object Services Entity Client
ADO.NET Provider
EDM MetaData CSDL MSL SSDL
Database
4/43
EDM 简介
EDM(Entity Data Model)-实体数据模型
24/43
语法
输出特殊字符@
Razor视图语法规则5-4
@@
示例
<p>@@2013 copy right</p> www.163@@.com
语法
模型的声明
@model 类型
示例 @model IEnumerable<RazorDemo.Models.Student>
25/43
语法
引用命名空间
Grade grade = entities.Grades.SingleOrDefault( g => g.GradeName == "S2");
if (grade != null) {
Console.WriteLine("S2年级的编号为{0}",grade.GradeId); } IQueryable<Student> query =entities.Students.Where(
TSource SingleOrDefault<TSource>( Expression<Func<TSource, bool>> predicate)
演示示例2:使用EF查询单表数据
12/43
示例
查询年级编号和指定条件的学生
关键代码回顾
using (MySchoolEntities entities = new MySchoolEntities()) {
this.Results = new HashSet<Result>(); } public int StudentNo { get; set; } public string LoginPwd { get; set; } //省略代码... public string Email { get; set; }
示例
using (MySchoolEntities entities = new MySchoolEntities()) {
Student stu = entities.Students. FirstOrDefault ( s => s.StudentName == "百福美");
if (stu != null) { stu.LoginPwd = "123456";
22/43
语法
Razor 代码块
Razor视图语法规则5-2
@{code}
示例
@{ var stu = new RazorDemo.Models.Student(); stu.StudentName = "王五"; stu.Gender = "男"; <p>姓名:@stu.StudentName</p> <p>性别:@stu.Gender</p>
if (entities.SaveChanges() > 0) {
Console.WriteLine("添加数据成功!"); } }
演示示例3:使用EF添加数据
14/43
使用EF修改数据
使用EF修改数据的基本步骤
1、从DbContext获取实体
2、修改属性值
3、使用DbContext 的SaveChanges()方法
s => s.Gender == "男" && s.GradeId==grade.GradeId); List<Student> stus = query.ToList(); foreach (var stu in stus) {
Console.WriteLine("{0}\t{1}",stu.StudentNo,stu.StudentName); } }
Entity Framework 初体验
1/43
Application Objects
ORM技术回顾
ORM的优势
快速开发 方便移植数据库
Database
ORM
2/43
流行的ORM框架
Hibernate MyBatis TopLink
.NET 世界的ORM框架
NHibernate MyBatis.NET LINQ to SQL ADO.NET Entity Framework
负责将关系数据库模型映射为实体数据模型
数据库 表 字段1 字段2
EDM 结构
SSDL存储模型 表 字段1 字段2
CSDL概念模型 实体 属性1 属性2
MSL映射 实体.属性1->表.字段1 实体.属性2->表.字段2
5/43
体验Entity Framework
由数据库生成EDM
以“ADO.NET 实体数据模型”为模板
演示示例1:由学生数据库生成EDM
6/43
示例
Entity Framework连接字符串
数据库连接字符串
<connectionStrings> <add name="MySchoolEntities" connectionString= "metadata=res://*/MySchool.csdl|res://*/MySchool.ssdl |res://*/MySchool.msl; provider=System.Data.SqlClient; provider connection string=" data source=.;initial catalog=MySchool;integrated security=True; MultipleActiveResultSets=True; App=EntityFramework"" providerName="System.Data.EntityClient" />
13/43
使用EF添加数据
使用EF添加数据的基本步骤
1. 使用DbSet<T>的Add()方法
2. 使用DbContext 的SaveChanges()方法
示例
using (MySchoolEntities entities = new MySchoolEntities()) {
entities.Students.Add( new Student() { LoginPwd = "123",StudentName = "百福美" });
</head>
<body> @RenderBody()
呈现页面内容
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
类似于ContentPlaceHolder
19/43
数据上下文类
DbContext-实体对象容器,操作数据库的工具
11/43
使用EF查询单表数据
DbSet<T>基类IEnumerable<TSource> 的数据 查询方法
IQueryable<TSource> Where<TSource>( Expression<Func<TSource, bool>> predicate)
}
23/43
语法
循环结构或条件结构
Razor视图语法规则5-3
@foreach(…){ } 或 @if (…) { } else { }
示例
@foreach (var stu in students) {
<p>姓名:@stu.StudentName</p> <p>性别:@stu.Gender</p> } @if (stu.Gender == "男") { <p>姓名:@stu.StudentName</p> <p>性别:@stu.Gender</p> }
RenderSection()呈现内容
页面内容
RenderBody()呈现内容
20/43
Razor 视图类型
Razor视图可用API
21/43
语法
Razor 表达式
Razor视图语法规则5-1
@(expression) 或@expression
示例
@DateTime.Now //输出时间 @Html.TextBox("Name") //调用方法 @("razor视图".ToString()) //输出字符串
演示示例4:使用EF修改数据
15/43
使用EF删除数据
使用EF删除数据的基本步骤
1、从DbContext获取实体
2、使用DbSet<T>的Remove()方法
3、使用DbContext 的SaveChanges()方法
public MySchoolEntities() : base("name=MySchoolEntities")
{ } public DbSet<Admin> Admins { get; set; } public DbSet<Grade> Grades { get; set; } public DbSet<Result> Results { get; set; } public DbSet<Student> Students { get; set; } public DbSet<Subject> Subjects { get; set; } public DbSet<Teacher> Teachers { get; set; } }
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
} if (entities.SaveChanges() > 0) { } }
演示示例5:使用EF删除数据
16/43
视图引擎简介
视图引擎-把视图解析成浏览器可执行的代码
独立的视图解析API 对应不同的视图语法规则
ASP.NET MVC 视图引擎
支持自由扩展
17/43
Razor视图引擎
Razor视图引擎-更简洁优雅的视图
母版视图
初始化
Razor视图特征:@ 符号 和 cshtml 文件扩展名
演示示例6:创建Razor视图项目
18/43
Razor母版视图
_Layout.cshtml文件结构
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
导航属性(关系)
public virtual Grade Grade { get; set; }//年级 public virtual ICollection<Result> Results { get; set; }//成绩
}
10/43
示例
学生数据库数据上下文类
public partial class MySchoolEntities : DbContext {
@using 命名空间
Razor视图语法规则5-5
示例 @using RazorDemo.Models
语法
注释
@* 被注释的内容 ቤተ መጻሕፍቲ ባይዱ@
Razor普通视图
普通视图文件结构
@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml";
}
@section scripts{ <script type="text/javascript">
</script> }
</connectionStrings>
7/43
实体数据模型的项目结构
实体数据模型
EDM元数据文件 数据上下文类 实体类
8/43
EDM设计器模式和XML结构
EDM元数据
9/43
示例
学生实体类
实体类
public partial class Student {
public Student() {
示例
using (MySchoolEntities entities = new MySchoolEntities()) {
Student stu = entities.Students.FirstOrDefault( s => s.StudentName == "百福美");
if (stu != null){ entities.Students.Remove(stu);//从集合中删除学生对象
ORM 框架
3/43
Entity Framework 体系结构
Object Services Entity Client
ADO.NET Provider
EDM MetaData CSDL MSL SSDL
Database
4/43
EDM 简介
EDM(Entity Data Model)-实体数据模型
24/43
语法
输出特殊字符@
Razor视图语法规则5-4
@@
示例
<p>@@2013 copy right</p> www.163@@.com
语法
模型的声明
@model 类型
示例 @model IEnumerable<RazorDemo.Models.Student>
25/43
语法
引用命名空间
Grade grade = entities.Grades.SingleOrDefault( g => g.GradeName == "S2");
if (grade != null) {
Console.WriteLine("S2年级的编号为{0}",grade.GradeId); } IQueryable<Student> query =entities.Students.Where(
TSource SingleOrDefault<TSource>( Expression<Func<TSource, bool>> predicate)
演示示例2:使用EF查询单表数据
12/43
示例
查询年级编号和指定条件的学生
关键代码回顾
using (MySchoolEntities entities = new MySchoolEntities()) {
this.Results = new HashSet<Result>(); } public int StudentNo { get; set; } public string LoginPwd { get; set; } //省略代码... public string Email { get; set; }
示例
using (MySchoolEntities entities = new MySchoolEntities()) {
Student stu = entities.Students. FirstOrDefault ( s => s.StudentName == "百福美");
if (stu != null) { stu.LoginPwd = "123456";
22/43
语法
Razor 代码块
Razor视图语法规则5-2
@{code}
示例
@{ var stu = new RazorDemo.Models.Student(); stu.StudentName = "王五"; stu.Gender = "男"; <p>姓名:@stu.StudentName</p> <p>性别:@stu.Gender</p>
if (entities.SaveChanges() > 0) {
Console.WriteLine("添加数据成功!"); } }
演示示例3:使用EF添加数据
14/43
使用EF修改数据
使用EF修改数据的基本步骤
1、从DbContext获取实体
2、修改属性值
3、使用DbContext 的SaveChanges()方法
s => s.Gender == "男" && s.GradeId==grade.GradeId); List<Student> stus = query.ToList(); foreach (var stu in stus) {
Console.WriteLine("{0}\t{1}",stu.StudentNo,stu.StudentName); } }
Entity Framework 初体验
1/43
Application Objects
ORM技术回顾
ORM的优势
快速开发 方便移植数据库
Database
ORM
2/43
流行的ORM框架
Hibernate MyBatis TopLink
.NET 世界的ORM框架
NHibernate MyBatis.NET LINQ to SQL ADO.NET Entity Framework
负责将关系数据库模型映射为实体数据模型
数据库 表 字段1 字段2
EDM 结构
SSDL存储模型 表 字段1 字段2
CSDL概念模型 实体 属性1 属性2
MSL映射 实体.属性1->表.字段1 实体.属性2->表.字段2
5/43
体验Entity Framework
由数据库生成EDM
以“ADO.NET 实体数据模型”为模板
演示示例1:由学生数据库生成EDM
6/43
示例
Entity Framework连接字符串
数据库连接字符串
<connectionStrings> <add name="MySchoolEntities" connectionString= "metadata=res://*/MySchool.csdl|res://*/MySchool.ssdl |res://*/MySchool.msl; provider=System.Data.SqlClient; provider connection string=" data source=.;initial catalog=MySchool;integrated security=True; MultipleActiveResultSets=True; App=EntityFramework"" providerName="System.Data.EntityClient" />
13/43
使用EF添加数据
使用EF添加数据的基本步骤
1. 使用DbSet<T>的Add()方法
2. 使用DbContext 的SaveChanges()方法
示例
using (MySchoolEntities entities = new MySchoolEntities()) {
entities.Students.Add( new Student() { LoginPwd = "123",StudentName = "百福美" });
</head>
<body> @RenderBody()
呈现页面内容
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
类似于ContentPlaceHolder
19/43
数据上下文类
DbContext-实体对象容器,操作数据库的工具
11/43
使用EF查询单表数据
DbSet<T>基类IEnumerable<TSource> 的数据 查询方法
IQueryable<TSource> Where<TSource>( Expression<Func<TSource, bool>> predicate)
}
23/43
语法
循环结构或条件结构
Razor视图语法规则5-3
@foreach(…){ } 或 @if (…) { } else { }
示例
@foreach (var stu in students) {
<p>姓名:@stu.StudentName</p> <p>性别:@stu.Gender</p> } @if (stu.Gender == "男") { <p>姓名:@stu.StudentName</p> <p>性别:@stu.Gender</p> }
RenderSection()呈现内容
页面内容
RenderBody()呈现内容
20/43
Razor 视图类型
Razor视图可用API
21/43
语法
Razor 表达式
Razor视图语法规则5-1
@(expression) 或@expression
示例
@DateTime.Now //输出时间 @Html.TextBox("Name") //调用方法 @("razor视图".ToString()) //输出字符串