Pass the current dataaccessproviderfactory type to CreateDatabase. Preference will take place using this type before going to the default in case it can't find the type via the connection string.

Fixes #135 and #122
6.0-servicing
Christopher Jolly 3 years ago
parent 49e195e6e7
commit d16195bc73

@ -519,8 +519,9 @@ namespace EntityFrameworkCore.Jet.Data
string fileNameOrConnectionString, string fileNameOrConnectionString,
DatabaseVersion version = DatabaseVersion.NewestSupported, DatabaseVersion version = DatabaseVersion.NewestSupported,
CollatingOrder collatingOrder = CollatingOrder.General, CollatingOrder collatingOrder = CollatingOrder.General,
string databasePassword = null, string? databasePassword = null,
SchemaProviderType schemaProviderType = SchemaProviderType.Precise) SchemaProviderType schemaProviderType = SchemaProviderType.Precise,
DataAccessProviderType? dataAccessProviderType = null)
{ {
if (databasePassword != null && if (databasePassword != null &&
databasePassword.Length > 20) databasePassword.Length > 20)
@ -538,11 +539,13 @@ namespace EntityFrameworkCore.Jet.Data
// //
// Ensure dual table existence: // Ensure dual table existence:
// //
DataAccessProviderType dbType = JetConfiguration.DefaultDataAccessProviderType;
if (dataAccessProviderType != null) dbType = dataAccessProviderType.Value;
var dataAccessProviderFactory = JetFactory.Instance.GetDataAccessProviderFactory( var dataAccessProviderFactory = JetFactory.Instance.GetDataAccessProviderFactory(
IsConnectionString(fileNameOrConnectionString) IsConnectionString(fileNameOrConnectionString)
? GetDataAccessProviderType(fileNameOrConnectionString) ? GetDataAccessProviderType(fileNameOrConnectionString)
: JetConfiguration.DefaultDataAccessProviderType); : dbType);
var connectionString = GetConnectionString(fileNameOrConnectionString, dataAccessProviderFactory); var connectionString = GetConnectionString(fileNameOrConnectionString, dataAccessProviderFactory);

@ -102,7 +102,7 @@ namespace EntityFrameworkCore.Jet.Data.JetStoreSchemaDefinition
if (string.IsNullOrWhiteSpace(fileName)) if (string.IsNullOrWhiteSpace(fileName))
throw new InvalidOperationException("CREATE DATABASE statement is missing database file name."); throw new InvalidOperationException("CREATE DATABASE statement is missing database file name.");
JetConnection.CreateDatabase(fileName, databasePassword: databasePassword); JetConnection.CreateDatabase(fileName, databasePassword: databasePassword, dataAccessProviderType:JetConnection.GetDataAccessProviderType(((JetConnection)command.Connection)?.DataAccessProviderFactory));
return true; return true;
} }
@ -114,7 +114,7 @@ namespace EntityFrameworkCore.Jet.Data.JetStoreSchemaDefinition
if (string.IsNullOrWhiteSpace(fileName)) if (string.IsNullOrWhiteSpace(fileName))
throw new InvalidOperationException("CREATE DATABASE statement is missing database file name or connection string."); throw new InvalidOperationException("CREATE DATABASE statement is missing database file name or connection string.");
JetConnection.CreateDatabase(fileName); JetConnection.CreateDatabase(fileName, dataAccessProviderType: JetConnection.GetDataAccessProviderType(((JetConnection)command.Connection)?.DataAccessProviderFactory));
return true; return true;
} }

Loading…
Cancel
Save