1.连接SQLServer,创建数据库TestDB;

2.添加EF引用,点击工具-NuGet包管理器-管理解决方案的NuGet程序包,

搜索EntityFramework包,点击安装;

3.在Web.config中添加节点

  1. <connectionStrings>
  2. <add connectionString="Data Source=(local);Initial Catalog=TestDB;Integrated Security=True" name="TestDBDAL" providerName="System.Data.SqlClient" />
  3. </connectionStrings>

  其中Data Source为服务器名,Initial Catalog为刚才在SQLServer中新建的数据库名,name则是接下来在代码中会使用到的名字,数据访问层和数据库之间的映射通过名称实现的,ConnectionString(连接字符串)的名称和数据访问层的类名称是相同的,都是TestDBDAL,因此会自动实现映射;

4.在Models文件下添加“PlayerModel”新类,为该类添加三个属性,并引用System.ComponentModel.DataAnnotations命名空间,在PlayerID属性上加上[Key]关键字标识主键;

  1. using System.ComponentModel.DataAnnotations;
  2.  
  3. namespace WebApplication6.Models
  4. {
  5. public class PlayerModel
  6. {
  7. [Key]
  8. public int PlayerID { get; set; }
  9. public string EnglishName { get; set; }
  10. public string ChineseName { get; set; }
  11. }
  12. }

5.在项目下添加“DataAccessLayer”文件夹,并且添加“TestDBDAL.cs”新类,并且引用System.Data.Entity命名空间,使该类继承DbContext类。定义映射关系,重写OnModelCreating方法,其中Players为表名,运行时会自动生成在SQLServer中。再在该类下定义一个DbSet类型的新属性,表示数据库中能查询到的所有play数据;

  1. using System.Data.Entity;
  2. using WebApplication6.Models;
  3.  
  4. namespace WebApplication6.DataAccessLayer
  5. {
  6. public class TestDBDAL : DbContext
  7. {
  8. public DbSet<PlayerModel> Players { get; set; }
  9. protected override void OnModelCreating(DbModelBuilder modelBuilder)
  10. {
  11. modelBuilder.Entity<PlayerModel>().ToTable("Players");
  12. base.OnModelCreating(modelBuilder);
  13. }
  14. }
  15. }

6.在HomeController.cs下的Index方法中添加获取Players的方法;

  1. public ActionResult Index()
  2. {
  3.   TestDBDAL testDBDAL = new TestDBDAL();
  4.   List<PlayerModel> listPlayers = testDBDAL.Players.ToList();
  5.   return View();
  6. }

7.运行项目;刷新TestDB数据库,会看到已经新建了Players表,并且有3列属性,其中PlayerID为主键。

8.为该表添加数据,并保存;

9.在Model文件夹下添加ListPlayerModel.cs新类,并且添加一个List类型的属性;

  1. using System.Collections.Generic;
  2.  
  3. namespace WebApplication6.Models
  4. {
  5. public class ListPlayerModel
  6. {
  7. public List<PlayerModel> Employees { get; set; }
  8. }
  9. }

10.将HomeController.cs下的Index方法改为获取数据库中players,并且传递给页面;

  1. public ActionResult Index()
  2. {
  3.   TestDBDAL testDBDAL = new TestDBDAL();
  4.   ListPlayerModel listPlayerModel = new ListPlayerModel
  5.   {
  6.     Employees = testDBDAL.Players.ToList()
  7.   };
  8.   return View(listPlayerModel);
  9. }

11.在页面构造球员列表容器;

  1. @using WebApplication6.Models;
  2. @model ListPlayerModel
  3. @{
  4. Layout = null;
  5. }
  6.  
  7. <div>
  8. <table>
  9. <tr>
  10. <th>EnglishName</th>
  11. <th>ChineseName</th>
  12. </tr>
  13. @foreach (PlayerModel player in Model.Employees)
  14. {
  15. <tr>
  16. <td>@player.EnglishName</td>
  17. <td>@player.ChineseName</td>
  18. </tr>
  19. }
  20. </table>
  21. </div>

12.运行代码,页面会出现数据库中3个球员的属性;

 插入数据

13.在index.cshtml后追加添加球员的div;

  1. <div>
  2. Add New Player<br />
  3. <form action="/Home/AddNewPlayer" method="post">
  4. EnglishName:<input name="EnglishName" value="" type="text" /><br />
  5. ChineseName:<input name="ChineseName" value="" type="text" /><br />
  6. <input type="submit" value="Add" />
  7. </form>
  8. </div>

14.在项目根目录下添加BAL(业务逻辑处理)文件夹,并在文件夹下新添PlayerBAL.cs类,用来处理球员相关的业务逻辑。在该类下添加AddPlayer方法;

  1. using WebApplication6.DataAccessLayer;
  2. using WebApplication6.Models;
  3.  
  4. namespace WebApplication6.BAL
  5. {
  6. public class PlayerBAL
  7. {
  8. public PlayerModel AddPlayer(PlayerModel player)
  9. {
  10. TestDBDAL testDBDAL = new TestDBDAL();
  11. testDBDAL.Players.Add(player);
  12. testDBDAL.SaveChanges();
  13. return player;
  14. }
  15. }
  16. }

15.在HomeController下新添AddNewPlayer方法;

  1. public ActionResult AddNewPlayer(PlayerModel p)
  2. {
  3. PlayerBAL playerBAL = new PlayerBAL();
  4. playerBAL.AddPlayer(p);
  5. return RedirectToAction("Index");
  6. }

其中RedirectToAction方法是重定向到XXX的方法,这里是指添加完球员后再次重定向到Index.cshtml这个View;

16.运行代码,并在View上添加球员,点击Add,可得刚才添加完的球员信息;

.Net下EF的简单实现的更多相关文章

  1. EF的简单认识

    EF的简单认识   EF简介 EntityFramwork是微软提供的一款ORM框架(Object Relational Mapping),实体映射模型,它的底层是ADO.NET的机制,使用EF将省去 ...

  2. linux下git的简单运用

    linux下git的简单运用 windows下也有git,是git公司出的bash,基本上模拟了linux下命令行.许多常用的命令和linux下操作一样.也就是说,windows下的git命令操作和l ...

  3. 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 ...

  4. Android下实现一个简单的计算器源码

    下面的内容是关于Android下实现一个简单的计算器的内容. import android.app.Activity; import android.os.Bundle;import android. ...

  5. Linux下MySQL的简单操作

    Linux下MySQL的简单操作 更改mysql数据库root的密码 首次进入数据库是不用密码的: [root@localhost ~]# /usr/local/mysql/bin/mysql -ur ...

  6. Linux系统下MongoDB的简单安装与基本操作

    这篇文章主要介绍了Linux系统下MongoDB的简单安装与基本操作,需要的朋友可以参考下   Mongo DB ,是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备 ...

  7. linux系统下开启一个简单的web服务

    linux 下开启一个简单的web服务: 首先需要linux下安装nodejs 然后创建一个test.js:   vi test.js var http =require("http&quo ...

  8. kubernetes实战之consul篇及consul在windows下搭建consul简单测试环境

    consul是一款服务发现中间件,1.12版本后增加servicemesh功能.consul是分布式的,可扩展的,高可用的根据官方文档介绍,目前已知最大的consul集群有5000个节点,consul ...

  9. MVC下EF添加上下文

    这里我们用Code First方法创建数据库表.这个方法简单点说就是先创建Model再根据Model生成数据库表. 为了方便起见,这里用的数据库是Visual Studio自带的LocalDb. 数据 ...

随机推荐

  1. jmeter脚本录制的两种方式

    完成一次完整的性能测试: 1.创建用户: 2.选择协议(HTTP) 3.使用工具去模拟协议操作(1.手工编写(抓包工具):2.工具自带录制) 4.运行工具进行压力测试

  2. 如何上传Packages到PyPI并批量抓取

    1.如何上传包到PyPI ? 更新中... 2.批量抓取simple网站第三方模块 https://pypi.python.org/simple/ 3. 第三方模块的安装和使用 python  set ...

  3. JS代码判断浏览器类型以及版本

    browserVersion:function(){ var explorer = window.navigator.userAgent; if (explorer.indexOf("MSI ...

  4. response设置编码格式

    response设置编码的三种方式 在java后台的Action代码或者Servlet代码中用response的方法来设置输出内容的编码方式,有以下三个方法: 1.response.setCharac ...

  5. aliyun API 调试

    打开https://ai.aliyun.com/,登录阿里云账号,选择控制台,右侧标签中选择产品服务,选择自己需要的子标签(如图像识别),选择API调试,按要求填写表格. 其中请求Body参照API文 ...

  6. DOM中的事件对象和IE事件对象

    DOM中的事件对象 IE事件对象 属性/方法 类型 读/写 说明 属性/方法 类型 读/写 说明  bubles Boolean 只读  表明事件是否冒泡  cancleBubble Boolean ...

  7. shell字符串分割截取和转换总结

    一:字符串的截取 假定有定义变量VAR=mm/aa/bb/dd 1.获取字符串长度:echo "${#VAR}",即输出11: 2.非贪婪模式删除左边的,保留右边的:echo &q ...

  8. 移植UC15 3G模块

    https://blog.csdn.net/jack_a8/article/details/43114083 https://wenku.baidu.com/view/7ea5c9cd52d380eb ...

  9. poj 1068 Parencodings 模拟题

    Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two diff ...

  10. 1.8.1suspend与resume方法使用

    暂停线程意味着线程还能恢复运行 suspend()方法暂停线程.resume()恢复线程 测试如下 package com.cky.thread; /** * Created by edison on ...