前段时间接触了EntityFramework,对ORM框架也是有了初步的认识,现在对其进行一点小总结。

一、ORM简介

  对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。是不是还是不懂?那我们把ORM拆开来说:

O   创建简单的实体对象,也就是数据Model

R   关系数据库中数据表

M   把实体对象与关系数据库具体数据表关联起来,产生相应的SQL操作

  在对象中主要利用 特性 来标识主外键、字段长度、默认值等。

二、EntityFramework的安装

  1. 在解决方案处单击右键
  2. 管理解决方案的NuGet程序包
  3. 在搜索框中搜索EntityFramework
  4. 勾选要安装的项目
  5. 安装EF

三、EntityFramework的简单配置

  • 对Web.config中的连接数据库的字符串进行配置

      <connectionStrings>
    <add name="DefaultConnection" connectionString="server=.;database=OnLineExamDB;uid=sa;pwd=123456;" providerName="System.Data.SqlClient" />
    </connectionStrings>

    server=.;代表为本地、OnLineExamDB为我连接的数据库的名称、uid跟pwd是连接数据库的用户密码

  • 配置Model层、主键要用[Key]进行标识并引用命名空间System.ComponentModel.DataAnnotations;
  • using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks; namespace Model
    {
    public class Class
    {
    [Key]
    //主键要加上[Key],并引用命名空间System.ComponentModel.DataAnnotations;
    public int ClassID { get; set; } /// <summary>
    /// 班级名称
    /// </summary>
    public string ClassName { get; set; } }
    }

    在DAL数据层创建DBFactory并继承DbContext,配置Model实体与表的关系

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.Entity;
    using Model; namespace DAL
    {
    public class DBFactory : DbContext
    {
    public DBFactory() : base("DefaultConnection")
    { } protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    //配置Model实体与表的关系
    modelBuilder.Entity<Class>().ToTable("Class");
    modelBuilder.Entity<Student>().ToTable("Student");
    base.OnModelCreating(modelBuilder);
    } // 班级数据工厂
    public DbSet<Class> ClassFactory { get; set; } // 学生数据工厂
    public DbSet<Student> StudentFactory { get; set; }
    }
    }
  • 在BLL业务层中创建StudentService,查询数据库数据

  FirstOrDefault为返回序列中的第一个元素,如果没有该元素就返回默认值。

  • namespace BLL
    {
    public class StudentService
    {
    DBFactory dbFactory = new DBFactory(); public Student GetStudent()
    {
    return dbFactory.StudentFactory.FirstOrDefault();
    }
    }
    }

    在Controller中配置

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using BLL;
    using Model;
    using OnLineExam.Models;
    using System.Web.Security; namespace OnLineExam.Controllers
    {
    public class UserInfoController : Controller
    {
    StudentService StudentService = new StudentService(); public ActionResult Index()
    {
    //获取学生Model
    var student = StudentService.GetStudent();
    //存入ViewData用于获取
    ViewData["Student"] = student;
    return View();
    }
    }
    }
  • 添加视图
    @using Model;
    @{
    var student = ViewData["Student"] as Student;
    Layout = null;
    } <!DOCTYPE html> <html>
    <head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    </head>
    <body>
    <div>
    学生名称:@student.StudentName
    </div>
    <div>
    学生编号:@student.StudentNumber
    </div>
    </body>
    </html>

结果显示:

这样一个使用EntityFramework的ORM框架就成功实现了。

ASP.NET 之 EntityFramework实体框架搭建的更多相关文章

  1. 用实体框架搭建MVC程序框架(全部)

    第一步:1.新建项目 2.新建domain类库 3.新建Data类库 4.为上面的1.2.3添加实体框架nuget包.(可以右键管理nuget包来查找entityframework,当然也可以通过程序 ...

  2. 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章  ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...

  3. .NET实体框架EF之CodeFirst

    ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Sch ...

  4. [c#]asp.net开发微信公众平台(2)多层架构框架搭建和入口实现

    上篇已经设计出比较完善的数据库了,这篇开始进入代码.  首先把上篇设计的数据库脚本在数据库中执行下,生成数据库,然后在VS中建立项目,为了方便理解和查看,我设计的都是很直白的类名和文件名,没有命名空间 ...

  5. asp.net mvc 简单项目框架的搭建过程(一)对Bll层和Dal层进行充分解耦

    学习asp.net 已经有近三个月的时间了,在asp.net mvc上花的时间最多,但个人真是有些菜,不得不说,asp.net mvc的水真的还是蛮深的.目前在公司实习,也见过公司几个项目的代码了.对 ...

  6. 从实体框架核心开始:构建一个ASP。NET Core应用程序与Web API和代码优先开发

    下载StudentApplication.Web.zip - 599.5 KB 下载StudentApplication.API.zip - 11.5 KB 介绍 在上一篇文章中,我们了解了实体框架的 ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...

  8. 实体框架高级应用之动态过滤 EntityFramework DynamicFilters

    实体框架高级应用之动态过滤 EntityFramework DynamicFilters 我们开门见山,直奔主题. 一.EntityFramework DynamicFilters 是什么,它能做什么 ...

  9. MVC之实体框架(数据持久化框架)EntityFrameWork(EF)

    EF - EntityFrameWork 中文名:实体框架(数据持久化框架) 1.使用EF查询(Linq to EF) 1.1使用标准查询运算符来查询 OumindBlogEntities db = ...

随机推荐

  1. Android-HttpClient-Get请求获取网络图片设置壁纸

    第一种方式使用httpclient-*.jar (需要在网上去下载httpclient-*.jar包) 把httpclient-4.5.jar/httpclient-4.4.1.jar包放入到libs ...

  2. .net core 使用 AspectCore 实现简易的AopCache。

    (第一次写博客,好紧张!!!) 源码地址:传送门 项目中有很多缓存的需求,能自己定义缓存key和时间,能根据key去清理缓存. 网上找了一圈,有很多基于aop的缓存组件,但是都不满足我的需求.故造了个 ...

  3. ovs QOS

    实验拓扑 拓扑实现脚本 ip netns add ns1 ip netns add ns2 ip netns add ns3 ip netns add ns4 ovs-vsctl add-br br0 ...

  4. Spring IOC 容器源码分析 - 获取单例 bean

    1. 简介 为了写 Spring IOC 容器源码分析系列的文章,我特地写了一篇 Spring IOC 容器的导读文章.在导读一文中,我介绍了 Spring 的一些特性以及阅读 Spring 源码的一 ...

  5. win10安装Ubuntu双系统

    1.软碟通做启动盘,不要用easyBCD,比较麻烦 2.windows10中取消选择"启用快速启动(推荐)" 3.压缩出空白卷 4.重启时按F12 5.在bios中将boot pr ...

  6. 微信小程序导出当前画布指定区域的内容并生成图片保存到本地相册(canvas)

    最近在学小程序,在把当前画布指定区域的内容导出并生成图片保存到本地这个知识点上踩坑了. 这里用到的方法是: wx.canvasToTempFilePath(),该方法作用是把当前画布指定区域的内容导出 ...

  7. 【xsy2815】净空 大暴力

    绝了场上居然没做这一题 题目大意:给你一个数$x=\Pi_{i=1}^{n}a_i!$. 你需要将x表示为$x=\Pi_{i=1}^{m}(c_i!)^{d_i}p$ 满足$p$无法再分解,且$(c_ ...

  8. POJ 2656

    #include<iostream> #include<stdio.h> using namespace std; int main() { //freopen("a ...

  9. Vue2.5开发去哪儿网App 第四章笔记 上

    一 .  组件细节知识点 1.  解决组件在h5中编码规范 例如 : table , ul , ol  等等 <table> <tbody> <row></r ...

  10. Redis学习系列六ZSet(有序列表)及Redis数据结构的过期

    一.简介 ZSet可以说是Redis中最有趣的数据结构了,因为他兼具了Hash集合和Set的双重特性,也是用的最多的,保证了value值的唯一性的同时,,同时又保证了高性能,最主要的是还可以给每个Va ...