Skip to content

Commit 83d9802

Browse files
committed
Allow for a missing datasource which means that the datasource is a FullUri like:
FullUri=file::memory:?cache=shared;Version=3
1 parent faa5102 commit 83d9802

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

SQLite.CodeFirst/Internal/Utility/ConnectionStringParser.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,17 @@ internal static class ConnectionStringParser
1717

1818
public static string GetDataSource(string connectionString)
1919
{
20-
var path = ExpandDataDirectory(ParseConnectionString(connectionString)[DataSourceToken]);
21-
// remove quotation mark if exists
22-
path = path.Trim('"');
23-
return path;
20+
// Check if the datasource token exists and return Null if it doesn't.
21+
// This will allow connection strings with FullUri to work.
22+
IDictionary<string, string> strings = ParseConnectionString(connectionString);
23+
if (strings.ContainsKey(DataSourceToken))
24+
{
25+
var path = ExpandDataDirectory(ParseConnectionString(connectionString)[DataSourceToken]);
26+
// remove quotation mark if exists
27+
path = path.Trim('"');
28+
return path;
29+
}
30+
return null;
2431
}
2532

2633
[SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase", Justification = "ToUppercase makes no sense.")]

SQLite.CodeFirst/Internal/Utility/InMemoryAwareFile.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ public static void CreateDirectory(string path)
5252

5353
private static bool IsInMemoryPath(string path)
5454
{
55-
return string.Equals(path, ":memory:", StringComparison.OrdinalIgnoreCase);
55+
// If the path doesn't exists then the datasource was empty as probably a FullUri was specified instead.
56+
return string.IsNullOrEmpty(path)
57+
|| string.Equals(path, ":memory:", StringComparison.OrdinalIgnoreCase);
5658
}
5759
}
5860
}

0 commit comments

Comments
 (0)