public static void RemoveDbProviderFactory(string invariant) { using (DataSet dataSet = ConfigurationManager.GetSection("system.data") as DataSet) { if (dataSet == null) { // .NET Core DbProviderFactories.UnregisterFactory(invariant); return; } var rows = dataSet.Tables[0].Rows; foreach (DataRow r in rows) { if (r["InvariantName"].ToString() == invariant) { rows.Remove(r); return; } } } throw new RuntimeException("Invariant name not found"); }
public void OneTimeTearDown() { #if NETFRAMEWORK DbProviderFactories.UnregisterFactory(ProviderInvariantName); #else DbProviderFactories.UnregisterFactory(ProviderInvariantName); #endif }
/// <summary> /// Add required services for SQLite support. /// </summary> public static IUmbracoBuilder AddUmbracoSqliteSupport(this IUmbracoBuilder builder) { // TryAddEnumerable takes both TService and TImplementation into consideration (unlike TryAddSingleton) builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ISqlSyntaxProvider, SqliteSyntaxProvider>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IBulkSqlInsertProvider, SqliteBulkSqlInsertProvider>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IDatabaseCreator, SqliteDatabaseCreator>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IProviderSpecificMapperFactory, SqliteSpecificMapperFactory>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IDatabaseProviderMetadata, SqliteDatabaseProviderMetadata>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IDistributedLockingMechanism, SqliteDistributedLockingMechanism>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IProviderSpecificInterceptor, SqliteAddPreferDeferredInterceptor>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IProviderSpecificInterceptor, SqliteAddMiniProfilerInterceptor>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IProviderSpecificInterceptor, SqliteAddRetryPolicyInterceptor>()); DbProviderFactories.UnregisterFactory(Constants.ProviderName); DbProviderFactories.RegisterFactory(Constants.ProviderName, SqliteFactory.Instance); // Remove this registration in Umbraco 12 DbProviderFactories.UnregisterFactory(Constants.ProviderNameLegacy); DbProviderFactories.RegisterFactory(Constants.ProviderNameLegacy, SqliteFactory.Instance); // Prevent accidental creation of SQLite database files builder.Services.PostConfigureAll <ConnectionStrings>(options => { // Skip empty connection string and other providers if (!options.IsConnectionStringConfigured() || (options.ProviderName != Constants.ProviderName && options.ProviderName != Constants.ProviderNameLegacy)) { return; } var connectionStringBuilder = new SqliteConnectionStringBuilder(options.ConnectionString); if (connectionStringBuilder.Mode == SqliteOpenMode.ReadWriteCreate) { connectionStringBuilder.Mode = SqliteOpenMode.ReadWrite; options.ConnectionString = connectionStringBuilder.ConnectionString; } }); return(builder); }
private static void RegisterAdoNetProvider(Type providerFactoryType) { #if NET452 var row = _providerTable.NewRow(); row["Name"] = "SqlClient Data Provider"; row["Description"] = ".Net Framework Data Provider for SqlServer"; row["InvariantName"] = SqlClientInvariantName; row["AssemblyQualifiedName"] = providerFactoryType.AssemblyQualifiedName; _providerTable.Rows.Remove(_providerTable.Rows.Find(SqlClientInvariantName)); _providerTable.Rows.Add(row); #else DbProviderFactories.UnregisterFactory(SqlClientInvariantName); DbProviderFactories.RegisterFactory(SqlClientInvariantName, providerFactoryType.AssemblyQualifiedName); #endif }
/// <summary> /// Add required services for SQLite support. /// </summary> public static IUmbracoBuilder AddUmbracoSqliteSupport(this IUmbracoBuilder builder) { // TryAddEnumerable takes both TService and TImplementation into consideration (unlike TryAddSingleton) builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ISqlSyntaxProvider, SqliteSyntaxProvider>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IBulkSqlInsertProvider, SqliteBulkSqlInsertProvider>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IDatabaseCreator, SqliteDatabaseCreator>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IProviderSpecificMapperFactory, SqliteSpecificMapperFactory>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IDatabaseProviderMetadata, SqliteDatabaseProviderMetadata>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IDistributedLockingMechanism, SqliteDistributedLockingMechanism>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IProviderSpecificInterceptor, SqliteAddPreferDeferredInterceptor>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IProviderSpecificInterceptor, SqliteAddMiniProfilerInterceptor>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IProviderSpecificInterceptor, SqliteAddRetryPolicyInterceptor>()); DbProviderFactories.UnregisterFactory(Constants.ProviderName); DbProviderFactories.RegisterFactory(Constants.ProviderName, Microsoft.Data.Sqlite.SqliteFactory.Instance); builder.Services.PostConfigure <ConnectionStrings>(Core.Constants.System.UmbracoConnectionName, opt => { if (!opt.IsConnectionStringConfigured()) { return; } if (opt.ProviderName != Constants.ProviderName) { // Not us. return; } // Prevent accidental creation of database files. var connectionStringBuilder = new SqliteConnectionStringBuilder(opt.ConnectionString); if (connectionStringBuilder.Mode == SqliteOpenMode.ReadWriteCreate) { connectionStringBuilder.Mode = SqliteOpenMode.ReadWrite; } opt.ConnectionString = connectionStringBuilder.ConnectionString; }); return(builder); }
/// <summary> /// Add required services for SQL Server support. /// </summary> public static IUmbracoBuilder AddUmbracoSqlServerSupport(this IUmbracoBuilder builder) { builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ISqlSyntaxProvider, SqlServerSyntaxProvider>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IBulkSqlInsertProvider, SqlServerBulkSqlInsertProvider>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IDatabaseCreator, SqlServerDatabaseCreator>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IDatabaseProviderMetadata, SqlLocalDbDatabaseProviderMetadata>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IDatabaseProviderMetadata, SqlServerDatabaseProviderMetadata>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IDatabaseProviderMetadata, SqlAzureDatabaseProviderMetadata>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IDistributedLockingMechanism, SqlServerDistributedLockingMechanism>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IProviderSpecificInterceptor, SqlServerAddMiniProfilerInterceptor>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IProviderSpecificInterceptor, SqlServerAddRetryPolicyInterceptor>()); DbProviderFactories.UnregisterFactory(Constants.ProviderName); DbProviderFactories.RegisterFactory(Constants.ProviderName, SqlClientFactory.Instance); return(builder); }
public static void RemoveAllDbProviderFactories() { using (DataSet dataSet = ConfigurationManager.GetSection("system.data") as DataSet) { if (dataSet == null) { // .NET Core foreach (var n in DbProviderFactories.GetProviderInvariantNames()) { DbProviderFactories.UnregisterFactory(n); } return; } var rows = dataSet.Tables[0].Rows; while (rows.Count > 0) { rows.RemoveAt(rows.Count - 1); } } }
/// <summary> /// Add required services for SQL Server support. /// </summary> public static IUmbracoBuilder AddUmbracoSqlServerSupport(this IUmbracoBuilder builder) { builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <ISqlSyntaxProvider, SqlServerSyntaxProvider>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IBulkSqlInsertProvider, SqlServerBulkSqlInsertProvider>()); builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IDatabaseCreator, SqlServerDatabaseCreator>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IDatabaseProviderMetadata, SqlLocalDbDatabaseProviderMetadata>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IDatabaseProviderMetadata, SqlServerDatabaseProviderMetadata>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IDatabaseProviderMetadata, SqlAzureDatabaseProviderMetadata>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IDistributedLockingMechanism, SqlServerDistributedLockingMechanism>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IProviderSpecificInterceptor, SqlServerAddMiniProfilerInterceptor>()); builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton <IProviderSpecificInterceptor, SqlServerAddRetryPolicyInterceptor>()); DbProviderFactories.UnregisterFactory(Constants.ProviderName); DbProviderFactories.RegisterFactory(Constants.ProviderName, SqlClientFactory.Instance); // Support provider name set by the configuration API for connection string environment variables builder.Services.ConfigureAll <ConnectionStrings>(options => { if (options.ProviderName == "System.Data.SqlClient") { options.ProviderName = Constants.ProviderName; } }); return(builder); }
public void Setup() { DbProviderFactories.UnregisterFactory("MySql.Data.MySqlClient"); //DbProviderFactories.RegisterFactory("MySql.Data.MySqlClient", MySqlClientFactory.Instance); }
/// <summary> /// 取消注册的数据库工厂 /// </summary> /// <param name="providerName">名称,唯一</param> public static bool UnregisterDbProvider(string providerName) { return(DbProviderFactories.UnregisterFactory(providerName)); }