/// <summary> /// 基于EF的单元测试可以通过初始化自己的OptionBuilder /// </summary> /// <param name="optionFactory"></param> public static void Initlize(IContextOptionBuilderFactory optionFactory) { if (DBContextOptionsLoader.optionFactory == null) { lock (lockRoot) { if (DBContextOptionsLoader.optionFactory == null) { DBContextOptionsLoader.optionFactory = optionFactory; } } } }
public static DbContextOptionsBuilder <T> CreateDbOption <T>(DbInfo dbInfo) where T : DbContext { // 这里是public,没办法防止外面随意调用,所以为了防止初始化后被随意改变,这里搞成单例 if (optionFactory == null) { lock (lockRoot) { if (optionFactory == null) { switch (dbInfo.DbType) { default: case DbType.MySql: optionFactory = new MySqlDBContextOptionBuilder(); break; case DbType.Oracle: optionFactory = new OracleDBContextOptionBuilder(); break; case DbType.SqlServer: optionFactory = new SqlServerDBContextOptionBuilder(); break; case DbType.InMemory: optionFactory = new InMemoryDBContextOptionBuilder(); break; case DbType.PostgreSQL: optionFactory = new PostgresqlDBContextOptionBuilder(); break; } } } } DbContextOptionsBuilder <T> options = optionFactory.CreateOptionsBuilder <T>(optionFactory.GetConnectionString(dbInfo)); return(options); }