From 458197e582b77279d1588cb3ac7757e5f209eae4 Mon Sep 17 00:00:00 2001 From: Christopher Jolly Date: Tue, 7 Mar 2023 21:40:19 +0800 Subject: [PATCH] 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 --- src/EFCore.Jet.Data/JetConnection.cs | 9 ++++++--- .../JetStoreSchemaDefinition/JetStoreDatabaseHandling.cs | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/EFCore.Jet.Data/JetConnection.cs b/src/EFCore.Jet.Data/JetConnection.cs index e5e1735..a31c8cb 100644 --- a/src/EFCore.Jet.Data/JetConnection.cs +++ b/src/EFCore.Jet.Data/JetConnection.cs @@ -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); diff --git a/src/EFCore.Jet.Data/JetStoreSchemaDefinition/JetStoreDatabaseHandling.cs b/src/EFCore.Jet.Data/JetStoreSchemaDefinition/JetStoreDatabaseHandling.cs index 6a3137a..91d26e6 100644 --- a/src/EFCore.Jet.Data/JetStoreSchemaDefinition/JetStoreDatabaseHandling.cs +++ b/src/EFCore.Jet.Data/JetStoreSchemaDefinition/JetStoreDatabaseHandling.cs @@ -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; }