EF-CodeFirst模式的簡單使用


要求:

引用EntityFramework

SqlServer數據庫

 一個C#項目

 

項目結構:

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

實體類(數據庫映射)

DbContext上下文(存儲庫)

數據庫連接字符串配置

 

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

每個數據庫對象在程序中都有一個類可以對應。
需要的了解的知識:類和數據庫映射相關的知識。
例子:
一個數據庫映射類

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

    public string Name{get;set;}

    [NotMap]//因為直接把Model和數據庫映射Model作為同一個,所以存在部分差異,這個字段不需要保存,所以配置為不映射到數據庫
    public string ShowInfo{get;set;}
}

 

2、實現 DbContext

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

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

例子:
定義一個上下文。

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)
   {
    //常見的操作
    //1、以反射的信息添加表,如某一程序集中的類,動態添加映射到數據庫中,可以不使用屬性。
    //2、自定義映射模式,如外鍵關系等映射模式,屬性名和表名的映射關系。
   }
} 

  

 

例子:
手動重建數據庫。

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

 

 

3、Web.Config或App.config中配置鏈接字符串

 


免責聲明!

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



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