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, 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