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

@ -102,7 +102,7 @@ namespace EntityFrameworkCore.Jet.Data.JetStoreSchemaDefinition
if (string.IsNullOrWhiteSpace(fileName))
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;
}
@ -114,7 +114,7 @@ namespace EntityFrameworkCore.Jet.Data.JetStoreSchemaDefinition
if (string.IsNullOrWhiteSpace(fileName))
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;
}

Loading…
Cancel
Save