IStartupTask連接數據庫的方法
- 數據庫操作系統
- 關注:6.98K次
系統啟動時執行任務:IStartupTask,啟動時執行的任務主要是數據庫的初始化和加載。
IStartupTask調用IEfDataProvider進行數據庫的初始化。
IEfDataProvider,SqlCeDataProvider:獲取數據連接工廠,不同類型數據庫,連接工廠不同。
接口IStartupTask的.實體類EfStartUpTask的實現如下:
public class EfStartUpTask : IStartupTask { public void Execute() { var settings = lve
SqlCeInitializer,CreateCeDatabaseIfNotExists初始化數據庫。
IDbContext,NopObjectContext系統數據庫操作上下文。加載所有數據庫映射類:EntityTypeConfiguration
protected override void OnModelCreating(DbModelBuilder modelBuilder) { //dynamically load all configuration // configType = typeof(LanguageMap); //any of your configuration classes here //var typesToRegister = ssembly(configType)ypes() var typesToRegister = xecutingAssembly()ypes() e(type => !llOrEmpty(space)) e(type => Type != null && nericType && enericTypeDefinition() == typeof(EntityTypeConfiguration<>)); foreach (var type in typesToRegister) { dynamic configurationInstance = teInstance(type); (configurationInstance); } // do it manually below. For example, //(new LanguageMap()); delCreating(modelBuilder); }
此方法是繼承自DbContext。並在系統啟動時調用,建立數據表與實體的對應關係。
在類型依賴註冊類ndencyRegistrar中實現數據庫工廠的創建、數據庫的加載。如下代碼:
//data layer var dataSettingsManager = new DataSettingsManager(); var dataProviderSettings = Settings(); ster(c => Settings())
接口IEfDataProvider 的實體類SqlServerDataProvider的數據庫初始化方法如下:
///
public override void SetDatabaseInitializer() { //pass some table names to ensure that we have nopCommerce 2.X installed var tablesToValidate = new[] {"Customer", "Discount", "Order", "Product", "ShoppingCartItem"}; //custom commands (stored proedures, indexes) var customCommands = new List
另外,EntityFramework本事是ORM框架,通過數據庫訪問上下文建立與數據庫的連接及實體與數據表的對應廣西。並通過創建IRepository
- 文章版權屬於文章作者所有,轉載請註明 https://xuewengu.com/flhy/shujuku/k7k76g.html