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_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的上下文中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM