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