这里我们用Code First方法创建数据库表。这个方法简单点说就是先创建Model再根据Model生成数据库表。

为了方便起见,这里用的数据库是Visual Studio自带的LocalDb。

数据库上下文,就是我们这里的数据访问层,根据Model对数据库表进行不同的操作。因此我们首先在项目中创建一个数据访问层文件夹,命名为DAL。然后,在DAL文件夹中创建Model对应的数据库访问上下文类,命名为CompanyContext。写入代码如下:

 1 using System.Data.Entity;
2 using SlarkInc.Models;
3 using System.Data.Entity.ModelConfiguration.Conventions;
4
5 namespace SlarkInc.DAL
6 {
7 public class CompanyContext : DbContext
8 {
9 public CompanyContext() : base("CompanyContext")
10 {
11 }
12
13 public DbSet<Worker> Workers {get;set;}
14
15 protected override void OnModelCreating(DbModelBuilder modelBuilder)
16 {
17 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
18 }
19 }
20 }

因为我们这里数据库访问要用Entity Framework, 所以第1行要引入System.Data.Entity。第7行,我们的数据库上下文继承EF中的DbContext基类。第9行表示

CompanyContext 继承基类DbContext的构造函数。第13行表示我们的Model Worker和CompanyContext中的数据集Workers对应。第15到18行定义了一个事件

OnModelCreating,这个事件在我们使用的Code First方法在数据库中创建数据表时触发。第17行的代码的作用是使我们创建出来的数据库表名字都是单数,不是复数。也就是说将来的数据库表名是Worker而不是Workers。这也是我们创建数据库表的习惯命名方法。

然后在Web.config文件里面加入这个数据库上下文要用到的数据库连接字符串。如下面的代码所示,在Web.config文件中找到<configuration>元素。然后在<configuration>元素内找到<connectionStrings>元素。最后在<connectionStrings>元素内加入如下<add>元素。

<configuration>
<connectionStrings>
<add name="CompanyContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=Company;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Company.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
<configuration>

这样我们的数据库上下文CompanyContext就可以用这个连接字符串来访问数据库了。解释一下<add>元素里的内容。name="CompanyContext"是连接字符串的名字,这个要和CompanyContext.cs 里的base("CompanyContext")函数的参数一样,这样初始化数据库上下文的时候才能读到字符串。Data Source=(LocalDb)\v11.0表示使用的数据库种类和版本。Catalog=Company是数据库的名字。Integrated Security=SSPI是验证方式。AttachDBFilename=|DataDirectory|\Company.mdf表示在我们这里,数据库文件存在 ~\App_Data\Company.mdf 下。providerName="System.Data.SqlClient"表示我们这里要用的数据库连接器,或者叫数据库驱动。

然后我们还要在Web.config中声明数据库上下文。在<configuration>中找到<entityFramework>元素。在<entityFramework>元素中找到<contexts>元素。在<contexts>元素中写入如下<context>元素。

<entityFramework>

<contexts>
   <context type="SlarkInc.DAL.CompanyContext, SlarkInc">
<databaseInitializer type="SlarkInc.DAL.CompanyInitializer, SlarkInc" />
</context>
</contexts>
</entityFramework>

type="SlarkInc.DAL.CompanyContext, SlarkInc"中的SlarkInc.DAL.CompanyContext表示这个CompanyContext的NameSpace和类名。逗号后面的SlarkInc表示这个CompanyContext在SlarkInc.dll中。

这样我们就把CompanyContext添加到了Entity Framework的上下文中。

MVC下EF添加上下文的更多相关文章

  1. [翻译][MVC 5 + EF 6] 6:创建更复杂的数据模型

    原文:Creating a More Complex Data Model for an ASP.NET MVC Application 前面的教程中,我们使用的是由三个实体组成的简单的数据模型.在本 ...

  2. 使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑

    翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 6 - 业务逻辑 Part 3: 设计逻辑层:核心开发 如前所述,我们的解决方案 ...

  3. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 3

    原文地址:http://ddmvc4.codeplex.com/ 原文名称:Design and Develop a website using ASP.NET MVC 4, EF, Knockout ...

  4. EF 之 MVC 排序,查询,分页 Sorting, Filtering, and Paging For MVC About EF

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    上篇博客我们学习了EF CodeFirst增删改查 ...

  5. [翻译][MVC 5 + EF 6] 3:排序、过滤、分页

    原文:Sorting, Filtering, and Paging with the Entity Framework in an ASP.NET MVC Application 1.添加排序: 1. ...

  6. MVC教程--MiniProfiler.EF监控调试MVC和EF的性能

    上一篇谈到mvc中ef输出执行sql日志:来谈用mvc开发项目的调试和性能监控.EF框架自动给我生成sql语句,当我们的程序遇到性能问题的时候我们可以用MiniProfiler.EF来监控调试MVC和 ...

  7. 翻译:使用 ASP.NET MVC 4, EF, Knockoutjs and Bootstrap 设计和开发站点 - 1

    原文地址:http://ddmvc4.codeplex.com/ 原文名称:Design and Develop a website using ASP.NET MVC 4, EF, Knockout ...

  8. MVC下压缩输入的HTML内容

    在MVC下如何压缩输出的HTML代码,替换HTML代码中的空白,换行符等字符? 1.首先要了解MVC是如何输出HTML代码到客户端的,先了解下Controller这个类,里面有很多方法,我们需要的主要 ...

  9. ASP.NET MVC下的四种验证编程方式[续篇]

    在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注Validation ...

随机推荐

  1. 使用EXCEL绘制三维地图(超简单的五分钟绘制地图方法,妈妈再也不用担心我不会画地图啦~)

    博主为从区域规划转行地图学的小学渣一枚,最近处理数据希望对结果进行三维可视化,意外发现从小用到大的EXCEL可以绘制地图且功能非常强大,在这里做一下简单介绍,希望可以给看官提供些许帮助.那下面就开始吧 ...

  2. Git 版本导致 clone 故障

    问题描述: git clone 报错如下: Initialized empty Git repository in /root/project_php/.git/ error: The request ...

  3. 运行Junit方法项目启动不了

    从控制台看不出任何有用信息,通过JUnit右键”Copy Failure List”将信息拷贝出来 TestStart.start initializationError(org.junit.runn ...

  4. RedHat Linux设置yum软件源为本地ISO

    先挂载ISO到某个目录下(如我的:/media/RHEL_6.0 x86_64 Disc 1) # mount –o loop rhel-server-6.4-x86_64-dvd.iso /medi ...

  5. Gym101128F:Landscaping

    题意 有一片h*w的草坪,要把每一行从左到右修剪一遍,每一列从上到下修剪一遍.每个草坪要么是高低要么是平地.割草机从高地到平地或者从平地到高地,需要花费a.也可以把平地变为高地或者把高地变为平地,花费 ...

  6. C语言中static修饰符的意义

    在C语言中,static通常有2种含义:1)定义变量的生命周期:2)定义变量或者函数的作用域. 变量的生命周期是指,相对于程序运行的进程生命周期,变量存在的时间段.变量的生命周期由变量的存储类型(位置 ...

  7. IDEA04 工具窗口管理、各种跳转、高效定位、行操作、列操作、live template、postfix、alt enter、重构、git使用

    1 工具窗口管理 所有的窗口都是在view -> tools windows 下面的,这些窗口可以放在IDEA的上下左右各个位置:右键某个窗口后选择move to 即可进行位置调整 2 跳转 2 ...

  8. 十大基于Docker的开发工具

    http://www.infoq.com/cn/news/2014/08/top-10-open-source-docker FlynnFlynn是一个使用Go语言编写的开源PaaS平台,Flynn使 ...

  9. 天云CloudStack 改进版

    整体风格   创建区域

  10. sourcetree免注册方法

    step1: https://www.sourcetreeapp.com/官网下载windows版软件 step2: 右键-->以管理员身份运行,便安装成功了 step3: 安装好之后会有这么一 ...