diff --git a/src/EFCore.Jet.Data/JetConfiguration.cs b/src/EFCore.Jet.Data/JetConfiguration.cs
index 314976e..6f0f2b5 100644
--- a/src/EFCore.Jet.Data/JetConfiguration.cs
+++ b/src/EFCore.Jet.Data/JetConfiguration.cs
@@ -57,18 +57,13 @@ namespace EntityFrameworkCore.Jet.Data
///
/// The DUAL table or query
///
- public static string DUAL { get; set; } = DUALForAccdb;
-
- ///
- /// The dual table for accdb
- ///
- public const string DUALForMdb = "(SELECT COUNT(*) FROM MSysRelationships)";
-
- ///
- /// The dual table for accdb
- ///
- public const string DUALForAccdb = "(SELECT COUNT(*) FROM MSysAccessStorage)";
+ public static string CustomDualTableName = "";
+ //MSysRelationships
+ //MSysAccessStorage
+ //#Dual
+ //(SELECT COUNT(*) FROM MSysAccessStorage)
+ public static string DetectedDualTableName = "#Dual";
///
/// Gets or sets a value indicating whether show SQL statements.
///
diff --git a/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs b/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs
index ffa9e50..3f49a01 100644
--- a/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs
+++ b/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs
@@ -224,7 +224,7 @@ namespace EntityFrameworkCore.Jet.Query.Sql.Internal
protected override void GeneratePseudoFromClause()
{
Sql.AppendLine()
- .Append("FROM " + JetConfiguration.DUAL);
+ .Append("FROM " + "(SELECT COUNT(*) FROM `" + (string.IsNullOrEmpty(JetConfiguration.CustomDualTableName) ? JetConfiguration.DetectedDualTableName : JetConfiguration.CustomDualTableName) + "`)");
}
private void GenerateList(
diff --git a/src/EFCore.Jet/Scaffolding/Internal/JetDatabaseModelFactory.cs b/src/EFCore.Jet/Scaffolding/Internal/JetDatabaseModelFactory.cs
index c0bd494..708b0c1 100644
--- a/src/EFCore.Jet/Scaffolding/Internal/JetDatabaseModelFactory.cs
+++ b/src/EFCore.Jet/Scaffolding/Internal/JetDatabaseModelFactory.cs
@@ -105,7 +105,21 @@ namespace EntityFrameworkCore.Jet.Scaffolding.Internal
table.Database = databaseModel;
databaseModel.Tables.Add(table);
}
-
+
+ var tableNames = databaseModel.Tables.Select(t => t.Name).ToList();
+ if (tableNames.Contains("MSysAccessStorage"))
+ {
+ JetConfiguration.DetectedDualTableName = "MSysAccessStorage";
+ }
+ else if (tableNames.Contains("MSysRelationships"))
+ {
+ JetConfiguration.DetectedDualTableName = "MSysRelationships";
+ }
+ else if (tableNames.Contains("#Dual"))
+ {
+ JetConfiguration.DetectedDualTableName = "#Dual";
+ }
+
return databaseModel;
}
finally