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;
            }
        }
Exemple #3
0
        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);
 }