EF-CodeFirst模式的簡單使用

要求:

引用EntityFrameworkweb

SqlServer數據庫數據庫

 一個C#項目ide

 

項目結構:

將實體模型映射到數據庫,只須要在下面三個地方進行配置、ui

實體類(數據庫映射)spa

DbContext上下文(存儲庫)code

數據庫鏈接字符串配置對象

 

一、實體類(數據庫映射)

每一個數據庫對象在程序中都有一個類能夠對應。
須要的瞭解的知識:類和數據庫映射相關的知識。
例子:
一個數據庫映射類blog

public class TModel
{
    [Key]//標記主鍵
    public int ID{get;set;}

    public string Name{get;set;}

    [NotMap]//由於直接把Model和數據庫映射Model做爲同一個,因此存在部分差別,這個字段不須要保存,因此配置爲不映射到數據庫
    public string ShowInfo{get;set;}
}

 

二、實現 DbContext

DBContext 實現了工做單元模式和存儲庫模式,也就是說這個能夠代替一個表一個Repository的方式,直接在DbContext中定義表結構就能夠直接使用了。字符串

數據庫生成功能就是在該類中實現。
工做單元模式:對象能夠在程序中更改,等到SaveChange 時才保存到數據庫。
把一系列業務對象的持久化由工做單元實現類統一在一個類管理,而不用爲每一個數據庫對象建一個倉儲層。get

例子:
定義一個上下文。

public class TestContext : System.Data.Entity.DbContext
{
    public TestContext() : base("LogStr")//LogStr爲web.config中的連接字符串。有多種設置連接的方式。
    {
        //設置初始化方式,可使用的策略類有:
        //CreateDatabaseIfNotExists 若是不存在數據庫,創建數據庫;
        //DropCreateDatabaseAlways 老是重建數據庫;
        //DropCreateDatabaseIfModelChanges 若是定義的模型發生改變,重建數據庫。
        //不設置該項,當模型發生改變時,查詢時會報錯。當數據庫不存在時,建立數據庫
            Database.SetInitializer(new CreateDatabaseIfNotExists<TestContext>());
  }

   //使用屬性的方式-映射的數據表對象
  public DbSet<TModel> TModels { get; set; }
    
   //自定義映射關係,可省略,經常使用於各類騷操做,一個發揮想象力的地方。
   protected override void OnModelCreating(DbModelBuilder modelBuilder)
   {
    //常見的操做
    //一、以反射的信息添加表,如某一程序集中的類,動態添加映射到數據庫中,能夠不使用屬性。
    //二、自定義映射模式,如外鍵關係等映射模式,屬性名和表名的映射關係。
   }
} 

  

 

例子:
手動重建數據庫。

using (TestContext logContext = new TestContext())
{
  logContext.Database.Initialize(true);
}

 

 

三、Web.Config或App.config中配置連接字符串

相關文章
相關標籤/搜索