好久没写博客了,今天研究了EF框架的CodeFirst模式,从字面意思可以看出,代码优先.所谓代码优先,与以往的添加ado.net不同,主要是编写代码生成数据库和数据表,生成数据实体映射。个人感觉这种方法相比较自动添加数据集的方式是不错的,但是有一个缺点就是,你编写的生成数据库和数据表的代码一旦写好,改起来就比较麻烦,就算改动了一个属性,就得将数据库删掉,重新运行代码(不删也行,但是需要更新数据库,比较麻烦)。好了,请看代码:

1.项目使用三层架构,在数据访问层用的是EF框架

2.在Model层新建Score和StudentModel类,内容如下

 namespace Students.Model
{
public class Score
{
/// <summary>
/// Gets or sets 分数ID
/// </summary>
public int ScoreID { get; set; } /// <summary>
/// Gets or sets 学生信息
/// </summary>
public virtual StudentsModel Student { get; set; } public virtual int? StudentId { get; set; } /// <summary>
/// Gets or sets 学生分数
/// </summary>
public decimal StudentScore { get; set; }
}
}

Score

 namespace Students.Model
{
public class StudentsModel
{
[Key]
public int StudentID { get; set; } /// <summary>
/// Gets or sets 学生学号
/// </summary>
public string StudentNumber { get; set; } /// <summary>
/// Gets or sets 学生姓名
/// </summary>
public string StudentName { get; set; }
}
}

StudentsModel

3.在DAL层新建一个StudentContext类,主要是构造实体对象(该类继承DbContext)

 namespace Students.DAL
{
public class StudentContext:DbContext
{
//构造实例模型
public DbSet<StudentsModel> Student { get; set; } public DbSet<Score> Score { get; set; }
}
}

StudentContext

4.配置Web.config,将连接字符串写入配置文件里

     <add name="StudentContext" connectionString="Data Source=PC201307311548;Initial Catalog=Student;Integrated Security=True" providerName="System.Data.SqlClient"/>

配置Web.config

5.实现方法

      //实例化数据源连接信息
private StudentContext context; public ScoreDAL()
{
context = new StudentContext();
} ///添加学生分数
public bool Add(Score score,string stuNum)
{
//判断学生是否存在
var student = this.context.Student.Where(p => p.StudentNumber == stuNum).FirstOrDefault();
try
{
if (student == null)
{
return false;
}
else
{
score.Student = student;
context.Score.Add(score);
context.SaveChanges();
context.Dispose();
return true;
}
}
catch (Exception e)
{
throw e;
}
} //修改学生分数
public bool Update(string stuNum,decimal score)
{
//查询学生是否有分数
var stuscore = this.context.Score.Where(p => p.Student.StudentNumber == stuNum).FirstOrDefault(); if (stuscore == null)
{
return false;
}
else
{
stuscore.StudentScore = score;
this.context.SaveChanges();
} return true;
} //删除学生信息
public bool Delete(string scoreId)
{
try
{
int id=int.Parse(scoreId);
//查询学生成绩是否存在
var score = this.context.Score.Where(p => p.ScoreID == id).FirstOrDefault(); //如果存在则执行删除,不存在则返回信息
if (score == null)
{
return true;
}
else
{
//删除成绩信息,提交到数据库执行
this.context.Score.Remove(score);
this.context.SaveChanges();
}
}
catch
{
return false;
} return true;
}

ScoreDAL示例

6.实现效果

三层架构下的EntityFramework codefirst的更多相关文章

  1. MVC项目实践,在三层架构下实现SportsStore-01,EF Code First建模、DAL层等

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  2. MVC项目实践,在三层架构下实现SportsStore-09,ASP.NET MVC调用ASP.NET Web API的查询服务

    ASP.NET Web API和WCF都体现了REST软件架构风格.在REST中,把一切数据视为资源,所以也是一种面向资源的架构风格.所有的资源都可以通过URI来唯一标识,通过对资源的HTTP操作(G ...

  3. MVC项目实践,在三层架构下实现SportsStore,从类图看三层架构

    在"MVC项目实践,在三层架构下实现SportsStore-02,DbSession层.BLL层"一文的评论中,博友浪花一朵朵建议用类图来理解本项目的三层架构.于是就有了本篇: I ...

  4. MVC项目实践,在三层架构下实现SportsStore-02,DbSession层、BLL层

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  5. MVC项目实践,在三层架构下实现SportsStore-03,Ninject控制器工厂等

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  6. MVC项目实践,在三层架构下实现SportsStore-04,实现分页

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  7. MVC项目实践,在三层架构下实现SportsStore-05,实现导航

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  8. MVC项目实践,在三层架构下实现SportsStore-06,实现购物车

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  9. MVC项目实践,在三层架构下实现SportsStore-07,实现订单提交

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

随机推荐

  1. 分模块创建maven项目(一)

    maven是一个项目构建和管理的工具. 我们可以通过maven仓库可以实现管理构建(主要是JAR还包括:WAR,ZIP,POM等等). 我们可以通过maven插件可以实现编译源代.产生Javadoc文 ...

  2. POI-HSSF and POI-XSSF - Java API To Access Microsoft Excel Format Files

    一.概述 HSSF和XSSF是apache开源项目POI中实现java面向Excel的两个接口.两者的区别在于,HSSF适用于Excel '97(-2007)文档,而XSSF适用于Excel 2007 ...

  3. Android自定义UI模板

    第一步:自定义xml属性 新建一个android项目,在values文件夹中新建一个atts.xml的文件,在这个xml文件中声明我们一会在使用自定义控件时候需要指明的属性.atts.xml < ...

  4. Spring和Hibernate集成配置

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  5. Js闭包常见三种用法

        Js闭包特性源于内部函数可以将外部函数的活动对象保存在自己的作用域链上,所以使内部函数的可以将外部函数的活动对象占为己有,可以在外部函数销毁时依然存有外部函数内的活动对象内容,这样做的好处是可 ...

  6. html制作一个美观的搜索框

    一般情况下搜索栏就是form标签中的一个input标签. 如: <form> <input type="text" placeholder=" 搜索关键 ...

  7. Oracle RAC的日志体系

    Oracle Clusterware 不像数据库那样,有丰富的视图.工具可以用来辅助诊断,它的日志和trace文件是唯一的选择.但不像Oracle只有alert日志和几种trace文件,Oracle ...

  8. MUI - Dialog 提示窗

    Mui基本简介 MUI不依赖任何第三方JS库,压缩后的JS和CSS文件仅有100+K和60+K MUI的开发手册和下载地址 http://dev.dcloud.net.cn/mui/ui/ https ...

  9. IOS第一天多线程-03线程间通信

    **** #import "HMViewController.h" @interface HMViewController () @property (weak, nonatomi ...

  10. Windows内核 字符串基本操作

    驱动程序中字符串操作涉及到ASCII字符串.宽字符串,还有DDK定义的ANSI_STRING数据结构和UNICODE_STRING数据结构. 1)ASCII字符串和宽字符串 在应用程序中使用两种字符: ...