引用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 實現了工做單元模式和存儲庫模式,也就是說這個能夠代替一個表一個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); }