ASP.NET 之 EntityFramework实体框架搭建
前段时间接触了EntityFramework,对ORM框架也是有了初步的认识,现在对其进行一点小总结。
一、ORM简介

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。是不是还是不懂?那我们把ORM拆开来说:
O 创建简单的实体对象,也就是数据Model
R 关系数据库中数据表
M 把实体对象与关系数据库具体数据表关联起来,产生相应的SQL操作
在对象中主要利用 特性 来标识主外键、字段长度、默认值等。
二、EntityFramework的安装
- 在解决方案处单击右键
- 管理解决方案的NuGet程序包
- 在搜索框中搜索EntityFramework
- 勾选要安装的项目
- 安装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实体框架搭建的更多相关文章
- 用实体框架搭建MVC程序框架(全部)
第一步:1.新建项目 2.新建domain类库 3.新建Data类库 4.为上面的1.2.3添加实体框架nuget包.(可以右键管理nuget包来查找entityframework,当然也可以通过程序 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章 ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...
- .NET实体框架EF之CodeFirst
ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Sch ...
- [c#]asp.net开发微信公众平台(2)多层架构框架搭建和入口实现
上篇已经设计出比较完善的数据库了,这篇开始进入代码. 首先把上篇设计的数据库脚本在数据库中执行下,生成数据库,然后在VS中建立项目,为了方便理解和查看,我设计的都是很直白的类名和文件名,没有命名空间 ...
- asp.net mvc 简单项目框架的搭建过程(一)对Bll层和Dal层进行充分解耦
学习asp.net 已经有近三个月的时间了,在asp.net mvc上花的时间最多,但个人真是有些菜,不得不说,asp.net mvc的水真的还是蛮深的.目前在公司实习,也见过公司几个项目的代码了.对 ...
- 从实体框架核心开始:构建一个ASP。NET Core应用程序与Web API和代码优先开发
下载StudentApplication.Web.zip - 599.5 KB 下载StudentApplication.API.zip - 11.5 KB 介绍 在上一篇文章中,我们了解了实体框架的 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...
- 实体框架高级应用之动态过滤 EntityFramework DynamicFilters
实体框架高级应用之动态过滤 EntityFramework DynamicFilters 我们开门见山,直奔主题. 一.EntityFramework DynamicFilters 是什么,它能做什么 ...
- MVC之实体框架(数据持久化框架)EntityFrameWork(EF)
EF - EntityFrameWork 中文名:实体框架(数据持久化框架) 1.使用EF查询(Linq to EF) 1.1使用标准查询运算符来查询 OumindBlogEntities db = ...
随机推荐
- 有关VS报错Files的值XXX
从网上下载了一个实例来学习,但是运行的时候报错:Files的值(后面跟一堆符号,看不懂), 环境:安装了易赛通加密软件(估计可能跟这个加密软件有关系了) 解决方案:找到程序根目录的obj/Debug/ ...
- java的环境变量
Java学习第一步——JDK安装及Java环境变量配置 2014-05-30 9:09 Java SE 阿超 9226 views Java作为当下很主流的编程语言,学习Java的朋友也越来越 ...
- [C# 面试总结]9个点如何画10条线
问题描述 9个点画10条直线,要求每条直线上至少3个点,相信这道理题目很多朋友在面试的时候都遇到过的(同时自己在面试的时候也遇到过),所以这里记录下来以备复习. 解决方法1:
- Windows核心编程:第9章 用内核对象进行线程同步
Github https://github.com/gongluck/Windows-Core-Program.git //第9章 用内核对象进行线程同步.cpp: 定义应用程序的入口点. // #i ...
- C#调用接口注意要点
在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存cookie值,再进行其他接 ...
- 作业调度系统quartz.net
任务调度在我们日常开发过程中非常常见,比如:每天晚上0点自动执行某某操作:每周三晚上2点执行某某操作:......当然,我们处理这类问题的方法也有很多,比如:sql的自动任务:windows上创建任务 ...
- 网络编程-socket(三)(TCP长连接和UDP短连接、时间服务器)
详解地址:https://www.cnblogs.com/mys6/p/10587673.html TCP server端 import socketsk = socket.socket() # 创建 ...
- Python黑客——快速编写信息收集器
i春秋作家:大木瓜 环境:Python 3模块:LxmlRequestBeautifulsoup开始:首先看一下目标站: http://gaokao.chsi.com.cn/gkxx/zszcgd/d ...
- 线程中消费者生产者的实例代码(synchronized关键字)
http://www.cnblogs.com/DreamDrive/p/6204665.html 这个是用Lock类实现的. 场景: 厨师类: import java.util.List; impo ...
- WebStorm project 打开多个项目的方法
File ---> Setting ---> Project:xxx ---> Sirectories 点击右侧 + Add content root,选择目录后即可显示该项目. ...