When creating databases, automatically use the latest database version that is supported by the current file extension. (#90)

pull/91/head
Laurents Meyer 5 years ago committed by GitHub
parent 56bf71b17f
commit 45dcfbe0dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -8,7 +8,7 @@ namespace EntityFrameworkCore.Jet.Data
{ {
public override void CreateDatabase( public override void CreateDatabase(
string fileNameOrConnectionString, string fileNameOrConnectionString,
DatabaseVersion version = DatabaseVersion.Newest, DatabaseVersion version = DatabaseVersion.NewestSupported,
CollatingOrder collatingOrder = CollatingOrder.General, CollatingOrder collatingOrder = CollatingOrder.General,
string databasePassword = null) string databasePassword = null)
{ {
@ -20,6 +20,12 @@ namespace EntityFrameworkCore.Jet.Data
var filePath = JetStoreDatabaseHandling.ExpandFileName(JetStoreDatabaseHandling.ExtractFileNameFromConnectionString(fileNameOrConnectionString)); var filePath = JetStoreDatabaseHandling.ExpandFileName(JetStoreDatabaseHandling.ExtractFileNameFromConnectionString(fileNameOrConnectionString));
if (version == DatabaseVersion.NewestSupported &&
string.Equals(System.IO.Path.GetExtension(filePath), ".mdb"))
{
version = DatabaseVersion.Version40;
}
try try
{ {
using dynamic catalog = new ComObject("ADOX.Catalog"); using dynamic catalog = new ComObject("ADOX.Catalog");
@ -86,7 +92,6 @@ namespace EntityFrameworkCore.Jet.Data
DatabaseVersion.Version30 => 5, DatabaseVersion.Version30 => 5,
DatabaseVersion.Version40 => 5, DatabaseVersion.Version40 => 5,
DatabaseVersion.Version120 => 6, DatabaseVersion.Version120 => 6,
DatabaseVersion.Newest => 0,
_ => 0 _ => 0
}; };

@ -9,7 +9,7 @@ namespace EntityFrameworkCore.Jet.Data
{ {
public override void CreateDatabase( public override void CreateDatabase(
string fileNameOrConnectionString, string fileNameOrConnectionString,
DatabaseVersion version = DatabaseVersion.Newest, DatabaseVersion version = DatabaseVersion.NewestSupported,
CollatingOrder collatingOrder = CollatingOrder.General, CollatingOrder collatingOrder = CollatingOrder.General,
string databasePassword = null) string databasePassword = null)
{ {
@ -21,6 +21,12 @@ namespace EntityFrameworkCore.Jet.Data
var filePath = JetStoreDatabaseHandling.ExpandFileName(JetStoreDatabaseHandling.ExtractFileNameFromConnectionString(fileNameOrConnectionString)); var filePath = JetStoreDatabaseHandling.ExpandFileName(JetStoreDatabaseHandling.ExtractFileNameFromConnectionString(fileNameOrConnectionString));
if (version == DatabaseVersion.NewestSupported &&
string.Equals(System.IO.Path.GetExtension(filePath), ".mdb"))
{
version = DatabaseVersion.Version40;
}
try try
{ {
using var dbEngine = CreateDbEngine(); using var dbEngine = CreateDbEngine();
@ -33,7 +39,6 @@ namespace EntityFrameworkCore.Jet.Data
DatabaseVersion.Version30 => (int) DatabaseTypeEnum.dbVersion30, DatabaseVersion.Version30 => (int) DatabaseTypeEnum.dbVersion30,
DatabaseVersion.Version40 => (int) DatabaseTypeEnum.dbVersion40, DatabaseVersion.Version40 => (int) DatabaseTypeEnum.dbVersion40,
DatabaseVersion.Version120 => (int) DatabaseTypeEnum.dbVersion120, DatabaseVersion.Version120 => (int) DatabaseTypeEnum.dbVersion120,
DatabaseVersion.Newest => 0,
_ => 0, _ => 0,
}; };

@ -31,7 +31,8 @@ namespace EntityFrameworkCore.Jet.Data
public enum DatabaseVersion public enum DatabaseVersion
{ {
Newest = 0, Newest = -1,
NewestSupported = 0,
Version10 = 10, Version10 = 10,
Version11 = 11, Version11 = 11,
Version20 = 20, Version20 = 20,
@ -44,7 +45,7 @@ namespace EntityFrameworkCore.Jet.Data
{ {
void CreateDatabase( void CreateDatabase(
string fileNameOrConnectionString, string fileNameOrConnectionString,
DatabaseVersion version = DatabaseVersion.Newest, DatabaseVersion version = DatabaseVersion.NewestSupported,
CollatingOrder collatingOrder = CollatingOrder.General, CollatingOrder collatingOrder = CollatingOrder.General,
string databasePassword = null); string databasePassword = null);

@ -506,14 +506,14 @@ namespace EntityFrameworkCore.Jet.Data
=> InnerConnectionFactory.Instance.ClearAllPools(); => InnerConnectionFactory.Instance.ClearAllPools();
public void CreateDatabase( public void CreateDatabase(
DatabaseVersion version = DatabaseVersion.Newest, DatabaseVersion version = DatabaseVersion.NewestSupported,
CollatingOrder collatingOrder = CollatingOrder.General, CollatingOrder collatingOrder = CollatingOrder.General,
string databasePassword = null) string databasePassword = null)
=> CreateDatabase(DataSource, version, collatingOrder, databasePassword, SchemaProviderType); => CreateDatabase(DataSource, version, collatingOrder, databasePassword, SchemaProviderType);
public static void CreateDatabase( public static void CreateDatabase(
string fileNameOrConnectionString, string fileNameOrConnectionString,
DatabaseVersion version = DatabaseVersion.Newest, 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)

@ -13,7 +13,7 @@ namespace EntityFrameworkCore.Jet.Data
_ => throw new ArgumentOutOfRangeException(nameof(schemaProviderType)) _ => throw new ArgumentOutOfRangeException(nameof(schemaProviderType))
}; };
public abstract void CreateDatabase(string fileNameOrConnectionString, DatabaseVersion version = DatabaseVersion.Newest, CollatingOrder collatingOrder = CollatingOrder.General, string databasePassword = null); public abstract void CreateDatabase(string fileNameOrConnectionString, DatabaseVersion version = DatabaseVersion.NewestSupported, CollatingOrder collatingOrder = CollatingOrder.General, string databasePassword = null);
public abstract void CreateDualTable(string fileNameOrConnectionString, string databasePassword = null); public abstract void CreateDualTable(string fileNameOrConnectionString, string databasePassword = null);
} }
} }

@ -5,7 +5,7 @@ namespace EntityFrameworkCore.Jet.Data
{ {
public override void CreateDatabase( public override void CreateDatabase(
string fileNameOrConnectionString, string fileNameOrConnectionString,
DatabaseVersion version = DatabaseVersion.Newest, DatabaseVersion version = DatabaseVersion.NewestSupported,
CollatingOrder collatingOrder = CollatingOrder.General, CollatingOrder collatingOrder = CollatingOrder.General,
string databasePassword = null) string databasePassword = null)
=> new DaoDatabaseCreator().CreateDatabase(fileNameOrConnectionString, version, collatingOrder, databasePassword); => new DaoDatabaseCreator().CreateDatabase(fileNameOrConnectionString, version, collatingOrder, databasePassword);

@ -261,7 +261,7 @@ namespace EntityFrameworkCore.Jet.Data.Tests
public static void CreateDatabase( public static void CreateDatabase(
string storeName, string storeName,
DatabaseVersion version = DatabaseVersion.Newest, DatabaseVersion version = DatabaseVersion.NewestSupported,
CollatingOrder collatingOrder = CollatingOrder.General, CollatingOrder collatingOrder = CollatingOrder.General,
string databasePassword = null) string databasePassword = null)
{ {

Loading…
Cancel
Save