Skip to content

Commit 1e6bbdb

Browse files
committed
Use SqlCompact provider when ConnectionString specifies an sdf file
1 parent 5ff87e3 commit 1e6bbdb

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

Simple.Data.Ado/ProviderHelper.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Concurrent;
33
using System.ComponentModel.Composition.Hosting;
4+
using System.Data.OleDb;
45
using System.Reflection;
56
using System.IO;
67

@@ -22,6 +23,13 @@ public static IConnectionProvider GetProviderByFilename(string filename)
2223

2324
private static IConnectionProvider LoadProviderByConnectionString(string connectionString)
2425
{
26+
var connectionStringBuilder = new OleDbConnectionStringBuilder(connectionString);
27+
28+
if (connectionStringBuilder.DataSource.EndsWith("sdf", StringComparison.CurrentCultureIgnoreCase) && File.Exists(connectionStringBuilder.DataSource))
29+
{
30+
return GetProviderByFilename(connectionStringBuilder.DataSource);
31+
}
32+
2533
var provider = ComposeProvider("sql");
2634

2735
provider.SetConnectionString(connectionString);

Simple.Data.SqlCe40Test/FindTests.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,19 @@ public class FindTests
1919
"TestDatabase.sdf");
2020

2121
[Test]
22-
public void TestMethod1()
22+
public void TestProviderWithFileName()
2323
{
2424
var provider = ProviderHelper.GetProviderByFilename(DatabasePath);
2525
Assert.IsInstanceOf(typeof (SqlCe40ConnectionProvider), provider);
2626
}
2727

28+
[Test]
29+
public void TestProviderWithConnectionString()
30+
{
31+
var provider = ProviderHelper.GetProviderByConnectionString(string.Format("data source={0}", DatabasePath));
32+
Assert.IsInstanceOf(typeof(SqlCe40ConnectionProvider), provider);
33+
}
34+
2835
[Test]
2936
public void TestFindById()
3037
{

0 commit comments

Comments
 (0)