MVC 捋一遍(1)

Model 封装业务逻辑相关的数据及对数据的处理方法

View 向用户提供交互界面

Controller 负责控制Model和View

但是在做的时候会发现还会出现DAL

DAL 放置数据访问相关类。

在DAL中

AccountContext为每个entity set创建一个DbSet

在EF中,通常情况下一个entity set对应数据库中的一张表,一个entity对应表中的一行。

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();这个的意思是:指定单数形式的表名

(DAL中)新建类AccountInitializer.cs

Seed方法用我们之前定义的database(数据库) context(即AccountContext) 作为参数,

通过这个context将entities添加到database(数据库)中去。(就是我们前面说的桥梁作用)

修改web.config, 通知EF使用我们刚刚写好的initializer类。

<entityFramework>
<contexts>
<context type="MVCDemo.DAL.AccountContext,MVCDemo" disableDatabaseInitialization="false">
<databaseInitializer type="MVCDemo.DAL.AccountInitializer,MVCDemo"></databaseInitializer>
</context>
</contexts>
</entityFramework>

在View和Controller中传递数据的一种方式 (类似的方式还有ViewData、TempData), 掌握通过ViewBag在View和Controller中传递数据

ViewBag可读性更好、在ViewPage中查询数据时不需要类型转换 ViewData在ViewPage中查询数据时需要转换合适的类型

ViewBag直接调用属性赋值

推荐一个好的例子:http://blog.csdn.net/fanbin168/article/details/44803437

[HttpPost]
public ActionResult Login(FormCollection fc)

填写表单 ->Controller获取表单数据 ->进一步操作(例如去数据库比对,通过后获取用户身份跳转到指定页面)

string email = fc["inputEmail3"]; //前台(HTML)email(input)的name属性 服务器端需要通过name来取值。

string password = fc["inputPassword3"];

 

通过下面的操作查询数据库进行比对 判断数据库中是否存在前台输入的数据

private AccountContext db = new AccountContext();

var user = db.SysUsers.Where(b => b.Email == email & b.Password == password);  //b为SysUser类型
if (user.Count() > 0)
{ ViewBag.LoginState = email + "登录后。。。"; }
else
{ ViewBag.LoginState = email + "用户不存在。。。"; }

HtmlHelper

通过View的Html属性调用,文中以Html.BeginForm为例

@*<form action="/account/login" method="post" class="form-horizontal" role="form">*@//post为写操作 get为读操作

@using (Html.BeginForm("login", "Account", FormMethod.Post))使用HtmlHelper动态计算路由地址。

 

微软官方推出的ORM框架主要有Linq to SQL和Entity Framework.

使用ORM之后,以前面的SysUser为例:

O(Object) -> 程序中的类 SysUser, 就是对象

R (Relation)->数据库中的表

M(Mapping)-> O和R的映射关系

ORM对传统方式的改进:

充当桥梁,实现了关系数据和对象数据的映射,通过映射自动产生SQL语句。

对常用的操作,节省了写SQL语句的步骤。

安装EF

打开 工具->库程序包管理器->程序包管理器控制台

输入 install-package entityframework

创建类 AccountContext.cs , 让他继承自System.Data.Entity.DbContext, 我们用这个类完成EF的功能。(在DAL中)

最重要的是通过ef生成数据库

posted @ 2017-11-25 20:59  你小子嚣张呀  阅读(244)  评论(0编辑  收藏  举报