Exemple #1
0
        /// <summary>
        /// 创建 DbContextOptionsBuilder
        /// </summary>
        /// <returns></returns>
        public static DbContextOptionsBuilder <ContextBase> CreateDbContextOptionsBuilder(DbContextOptionsBuilder builder = null)
        {
            if (builder == null)
            {
                builder = new DbContextOptionsBuilder <ContextBase>();
            }

            if (!builder.IsConfigured)
            {
                System.Enum.TryParse(GlobalTo.GetValue("TypeDB"), true, out GlobalTo.TDB);

                var conn = GlobalTo.GetConn();

                switch (GlobalTo.TDB)
                {
                case TypeDB.MySQL:
                    builder.UseMySql(conn);
                    break;

                case TypeDB.SQLite:
                    builder.UseSqlite(conn.Replace("~", GlobalTo.ContentRootPath));
                    break;

                case TypeDB.SQLServer:
                    builder.UseSqlServer(conn, options =>
                    {
                        //启用 row_number 分页 (兼容2005、2008)
                        //options.UseRowNumberForPaging();
                    });
                    break;

                case TypeDB.PostgreSQL:
                {
                    builder.UseNpgsql(conn);
                }
                break;

                case TypeDB.InMemory:
                    builder.UseInMemoryDatabase(conn);
                    break;
                }

                //注册日志(修改日志等级为Information,可查看执行的SQL语句)
                builder.EnableSensitiveDataLogging();
                builder.UseLoggerFactory(LoggerFactory);
            }

            return(builder as DbContextOptionsBuilder <ContextBase>);
        }