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
pull/137/head
Christopher Jolly 3 years ago
parent a7d503689b
commit 458197e582

@ -520,7 +520,8 @@ namespace EntityFrameworkCore.Jet.Data
DatabaseVersion version = DatabaseVersion.NewestSupported,
CollatingOrder collatingOrder = CollatingOrder.General,
string? databasePassword = null,
SchemaProviderType schemaProviderType = SchemaProviderType.Precise)
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