zoukankan      html  css  js  c++  java
  • MVC下EF添加上下文

    这里我们用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_DataCompany.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的上下文中。

  • 相关阅读:
    c语言面试
    汇编面试基础
    求余符号的用法
    ++a和a++的一点不同
    OVER子句
    SQL执行计划解析(1) 执行计划基础
    sql 排序规则 chinese_prc_ci_as
    SQL执行计划解析(2) 基本查询的图形执行计划
    过sql_trace跟踪得到了该SQL的执行计划,如何看懂执行计划
    JS日历控件集合附效果图、源代码
  • 原文地址:https://www.cnblogs.com/sky2014/p/4277269.html
Copyright © 2011-2022 走看看