.Net下EF的简单实现
1.连接SQLServer,创建数据库TestDB;
2.添加EF引用,点击工具-NuGet包管理器-管理解决方案的NuGet程序包,
搜索EntityFramework包,点击安装;
3.在Web.config中添加节点
<connectionStrings>
<add connectionString="Data Source=(local);Initial Catalog=TestDB;Integrated Security=True" name="TestDBDAL" providerName="System.Data.SqlClient" />
</connectionStrings>
其中Data Source为服务器名,Initial Catalog为刚才在SQLServer中新建的数据库名,name则是接下来在代码中会使用到的名字,数据访问层和数据库之间的映射通过名称实现的,ConnectionString(连接字符串)的名称和数据访问层的类名称是相同的,都是TestDBDAL,因此会自动实现映射;
4.在Models文件下添加“PlayerModel”新类,为该类添加三个属性,并引用System.ComponentModel.DataAnnotations命名空间,在PlayerID属性上加上[Key]关键字标识主键;
using System.ComponentModel.DataAnnotations; namespace WebApplication6.Models
{
public class PlayerModel
{
[Key]
public int PlayerID { get; set; }
public string EnglishName { get; set; }
public string ChineseName { get; set; }
}
}
5.在项目下添加“DataAccessLayer”文件夹,并且添加“TestDBDAL.cs”新类,并且引用System.Data.Entity命名空间,使该类继承DbContext类。定义映射关系,重写OnModelCreating方法,其中Players为表名,运行时会自动生成在SQLServer中。再在该类下定义一个DbSet类型的新属性,表示数据库中能查询到的所有play数据;
using System.Data.Entity;
using WebApplication6.Models; namespace WebApplication6.DataAccessLayer
{
public class TestDBDAL : DbContext
{
public DbSet<PlayerModel> Players { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<PlayerModel>().ToTable("Players");
base.OnModelCreating(modelBuilder);
}
}
}
6.在HomeController.cs下的Index方法中添加获取Players的方法;
public ActionResult Index()
{
TestDBDAL testDBDAL = new TestDBDAL();
List<PlayerModel> listPlayers = testDBDAL.Players.ToList();
return View();
}
7.运行项目;刷新TestDB数据库,会看到已经新建了Players表,并且有3列属性,其中PlayerID为主键。
8.为该表添加数据,并保存;
9.在Model文件夹下添加ListPlayerModel.cs新类,并且添加一个List类型的属性;
using System.Collections.Generic; namespace WebApplication6.Models
{
public class ListPlayerModel
{
public List<PlayerModel> Employees { get; set; }
}
}
10.将HomeController.cs下的Index方法改为获取数据库中players,并且传递给页面;
public ActionResult Index()
{
TestDBDAL testDBDAL = new TestDBDAL();
ListPlayerModel listPlayerModel = new ListPlayerModel
{
Employees = testDBDAL.Players.ToList()
};
return View(listPlayerModel);
}
11.在页面构造球员列表容器;
@using WebApplication6.Models;
@model ListPlayerModel
@{
Layout = null;
} <div>
<table>
<tr>
<th>EnglishName</th>
<th>ChineseName</th>
</tr>
@foreach (PlayerModel player in Model.Employees)
{
<tr>
<td>@player.EnglishName</td>
<td>@player.ChineseName</td>
</tr>
}
</table>
</div>
12.运行代码,页面会出现数据库中3个球员的属性;
插入数据
13.在index.cshtml后追加添加球员的div;
<div>
Add New Player<br />
<form action="/Home/AddNewPlayer" method="post">
EnglishName:<input name="EnglishName" value="" type="text" /><br />
ChineseName:<input name="ChineseName" value="" type="text" /><br />
<input type="submit" value="Add" />
</form>
</div>
14.在项目根目录下添加BAL(业务逻辑处理)文件夹,并在文件夹下新添PlayerBAL.cs类,用来处理球员相关的业务逻辑。在该类下添加AddPlayer方法;
using WebApplication6.DataAccessLayer;
using WebApplication6.Models; namespace WebApplication6.BAL
{
public class PlayerBAL
{
public PlayerModel AddPlayer(PlayerModel player)
{
TestDBDAL testDBDAL = new TestDBDAL();
testDBDAL.Players.Add(player);
testDBDAL.SaveChanges();
return player;
}
}
}
15.在HomeController下新添AddNewPlayer方法;
public ActionResult AddNewPlayer(PlayerModel p)
{
PlayerBAL playerBAL = new PlayerBAL();
playerBAL.AddPlayer(p);
return RedirectToAction("Index");
}
其中RedirectToAction方法是重定向到XXX的方法,这里是指添加完球员后再次重定向到Index.cshtml这个View;
16.运行代码,并在View上添加球员,点击Add,可得刚才添加完的球员信息;
.Net下EF的简单实现的更多相关文章
- EF的简单认识
EF的简单认识 EF简介 EntityFramwork是微软提供的一款ORM框架(Object Relational Mapping),实体映射模型,它的底层是ADO.NET的机制,使用EF将省去 ...
- linux下git的简单运用
linux下git的简单运用 windows下也有git,是git公司出的bash,基本上模拟了linux下命令行.许多常用的命令和linux下操作一样.也就是说,windows下的git命令操作和l ...
- Centos 6.5下一个SNMP简单配置(snmp protocol v3,监控宝)
Centos 6.5下一个SNMP简单配置(snmp protocol v3.监控宝) jom_ch@2014/7/25 1,安装 >yum -y install net-snmp net-sn ...
- Android下实现一个简单的计算器源码
下面的内容是关于Android下实现一个简单的计算器的内容. import android.app.Activity; import android.os.Bundle;import android. ...
- Linux下MySQL的简单操作
Linux下MySQL的简单操作 更改mysql数据库root的密码 首次进入数据库是不用密码的: [root@localhost ~]# /usr/local/mysql/bin/mysql -ur ...
- Linux系统下MongoDB的简单安装与基本操作
这篇文章主要介绍了Linux系统下MongoDB的简单安装与基本操作,需要的朋友可以参考下 Mongo DB ,是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备 ...
- linux系统下开启一个简单的web服务
linux 下开启一个简单的web服务: 首先需要linux下安装nodejs 然后创建一个test.js: vi test.js var http =require("http&quo ...
- kubernetes实战之consul篇及consul在windows下搭建consul简单测试环境
consul是一款服务发现中间件,1.12版本后增加servicemesh功能.consul是分布式的,可扩展的,高可用的根据官方文档介绍,目前已知最大的consul集群有5000个节点,consul ...
- MVC下EF添加上下文
这里我们用Code First方法创建数据库表.这个方法简单点说就是先创建Model再根据Model生成数据库表. 为了方便起见,这里用的数据库是Visual Studio自带的LocalDb. 数据 ...
随机推荐
- easyui 获取特定页签tab
var findTab=$('#mytabs').tabs('getTab','财务信息').panel('options').tab; var findTabIndex = $('#tab').ta ...
- js 异步加载和同步加载
异步加载 异步加载也叫非阻塞模式加载,浏览器在下载js的同时,同时还会执行后续的页面处理.在script标签内,用js创建一个script元素并插入到document中,这种就是异步加载js文件了: ...
- python之排列组合测试
# test permutations and combinations import itertools as it for i in it.combinations('abcd',2): prin ...
- json(原生态)
什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSO ...
- Keras的泰坦尼克号的生存率的数据分析
# coding: utf-8 # In[1]: import urllib.request import os # In[2]: url="http://biostat.mc.vand ...
- Django的学习(六)————templates过滤器、Django shell、admin
一.filter: 1.介绍: 写在模板中,属于Django的模板语言. 可以修改模板中的变量,从而显示不同的内容 2.使用: {{ value | filter }},且过滤器可以嵌套使用 < ...
- De Bruijn序列
最近文章中经常出现及De Bruijin 这个关键字,网上搜索了一下,记录下来. De Bruijn序列 (德布鲁因序列) 问题:能否构造一个长度为2的n次方的二进制环状串,使得二进制环状串中总共2的 ...
- IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理 (二)
第二部分 邮件发送历史 一.第一封邮件 1.1969年10月,世界上的第一封电子邮件 1969年10月世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简短 ...
- Linux创建一个周期任务来定期删除过期的文件
一:需求 在开发中存在这样的情况,为了防止文件的误删,不允许开发人员直接删除项目中要用到的文件,而是将它们移动到某个目录,然后由一个周期任务去检测并删除内部过期的文件: 二:检测文件是否是过期文件 有 ...
- Chapter15 Principles of Metabolic Regulation
15.1 调节代谢的通路 (1)细胞和有机体维持着动态稳定 调节作用的基因多 2500个 12% 激酶占比多 300个 一个通路受到多方调节 (2)酶的数量和催化活性 可以被调节 反应物的调控 糖酵解 ...