public static void Init(DbInfo dbInfo) { if (isInitialized) { throw new InvalidOperationException("EfCore is already initialized!"); } optionsBuilder = new DbContextOptionsBuilder <AppDbContext>(); optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); DbInitializer.InitDb(dbInfo, optionsBuilder); using (AppDbContext ctx = new AppDbContext(optionsBuilder.Options)) { try { DbInitializer.DbCtx = ctx; ctx.Database.Migrate(); } catch (Exception ex) { throw ex; } } }
public static void InitDb(DbInfo dbInfo, DbContextOptionsBuilder <AppDbContext> ctxBuilder) { DatabaseType = dbInfo.Type; switch (dbInfo.Type) { case DbType.Mssql: InitSqlServer(dbInfo, ctxBuilder); break; case DbType.Sqlite: InitSqlite(dbInfo, ctxBuilder); break; } }
void RegisterLocalDatabase() { string commonDocs = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); string targetDir = Path.Combine(commonDocs, "TestCompany", "AppName"); if (!Directory.Exists(targetDir)) { Directory.CreateDirectory(targetDir); } string targetFileName = Path.Combine(targetDir, "data.appname"); DbInfo db = new DbInfo(); db.ConnectionString = $"Data Source={targetFileName};"; db.IsDefault = true; db.Name = "Local"; db.Type = DbType.Sqlite; EfCoreHelper.Init(db); }
static void InitSqlServer(DbInfo dbInfo, DbContextOptionsBuilder <AppDbContext> ctx) { ctx.UseSqlServer(dbInfo.ConnectionString); }