• 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生成数据库

  • 相关阅读:
    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期
    Maven(一)初识Maven
    MySQL(十一)之触发器
    MySQL(十)之视图
    MySQL(九)之数据表的查询详解(SELECT语法)二
    MySQL(九)之数据表的查询详解(SELECT语法)一
    关于oracle的锁表解决session marked for kill
    shell脚本清空redis库缓存
    Java 数组拷贝方法 System.arraycopy
    oracle 替换字符 replace
  • 原文地址:https://www.cnblogs.com/wwr01/p/7896392.html
Copyright © 2020-2023  润新知