第8章 Entity Framework初体验

第8章 Entity Framework初体验

8.1 Entity Framework体系结构

clip_image004

clip_image006

8.2 体验Entity Framework的威力

8.2.1 操作单表数据

1.查询数据

IQueryable<TSource> Where<TSource>(

Expression<Func<TSource, bool>> predicate)

TSource SingleOrDefault<TSource>(

Expression<Func<TSource, bool>> predicate)

示例:

using (MySchoolEntities entities = new MySchoolEntities())

{

Grade grade = entities.Grades.SingleOrDefault(

g => g.GradeName == "S2");

if (grade != null)

{

Console.WriteLine("S2年级的编号为{0}",grade.GradeId);

}

IQueryable<Student> query =entities.Students.Where(

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);

}

}

2.添加数据

n 使用EF添加数据的基本步骤

1. 使用DbSet<T>的Add()方法

2. 使用DbContext 的SaveChanges()方法//保存数据

示例:

using (MySchoolEntities entities = new MySchoolEntities())

{

entities.Students.Add(

new Student()

{

LoginPwd = "123",StudentName = "百福美"

});

if (entities.SaveChanges() > 0)

{

Console.WriteLine("添加数据成功!");

}

}

3.修改数据

n 使用EF修改数据的基本步骤

1. 从DbContext获取实体

2. 修改属性值

3. 使用DbContext 的SaveChanges()方法

示例:

using (MySchoolEntities entities = new MySchoolEntities())

{

Student stu = entities.Students. FirstOrDefault (

s => s.StudentName == "百福美");

if (stu != null) {

stu.LoginPwd = "123456";

}

if (entities.SaveChanges() > 0){ }

}

4.删除数据

n 使用EF删除数据的基本步骤

1. 从DbContext获取实体

2. 使用DbSet<T>的Remove()方法

3. 使用DbContext 的SaveChanges()方法

示例:

using (MySchoolEntities entities = new MySchoolEntities())

{

Student stu = entities.Students.FirstOrDefault(

s => s.StudentName == "百福美");

if (stu != null){

entities.Students.Remove(stu);//从集合中删除学生对象

}

if (entities.SaveChanges() > 0) { }

}

8.3 Razor视图

clip_image008

8.3.1 使用Razor视图引擎

clip_image010

8.3.2 认识Razor视图

母版视图:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<meta name="viewport" content="width=device-width" />

<title>@ViewBag.Title</title>

@Styles.Render("~/Content/css")

@Scripts.Render("~/bundles/modernizr")

</head>

<body>

@RenderBody()

@Scripts.Render("~/bundles/jquery")

@RenderSection("scripts", required: false)

</body>

</html>

代码说明:

>Style.Render(“~/Content/css”)用于输出

”\App_Start\BundleConfig.cs”中注册的CSS文件。

>Scripts.Render(“~/bundles/modernizr”)用于输出

” \App_Start\BundleConfig.cs”注册的支持HTML5和CSS3脚本文件。

>Scripts.Render(“~/bundles/jquery”)用于输出

” \App_Start\BundleConfig.cs”中注册的jQuery脚本文件

>RenderSection(“scripts”,required:false),用于呈现指定部分的内容。

>RenderBody()呈现不在指定部分中的内容页,这是必须调用的方法

>Layout表示内容页使用的母版视图,如果不使用母版页可以Layout=null.

8.3.3 神奇的@

1.@(expression)或@expression

@DateTime.Now //输出时间

@Html.TextBox("Name") //调用方法

@("razor视图".ToString()) //输出字符串

2.@{code}结构

@{

var stu = new RazorDemo.Models.Student();

stu.StudentName = "王五";

stu.Gender = "男";

<p>姓名:@stu.StudentName</p>

<p>性别:@stu.Gender</p>

}

2.循环结构或条件结构

@foreach (var stu in students)

{

<p>姓名:@stu.StudentName</p>

<p>性别:@stu.Gender</p>

}

@if (stu.Gender == "男")

{

<p>姓名:@stu.StudentName</p>

<p>性别:@stu.Gender</p>

}

4.输出@

@@

5.模型类型的声明

@model 类型

6.引用命名空间

@using 命名空间

7.注释

@**@

posted @ 2018-04-17 15:06  Bug的梦魇  阅读(305)  评论(0编辑  收藏  举报