要求:
引用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中配置鏈接字符串