Use `DbConnectionStringBuilder` instead of its OleDb equivalent.

Introduce some helper extension methods to access well defined OleDb properties, that `DbConnectionStringBuilder` knows nothing about.
pull/37/head
Lau 6 years ago
parent 3c692bb172
commit 25f8685320

@ -3,7 +3,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data.Jet; using System.Data.Jet;
using System.Data.OleDb;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
@ -454,10 +453,14 @@ namespace EntityFrameworkCore.Jet.Migrations
Check.NotNull(operation, nameof(operation)); Check.NotNull(operation, nameof(operation));
Check.NotNull(builder, nameof(builder)); Check.NotNull(builder, nameof(builder));
var connectionStringBuilder = new OleDbConnectionStringBuilder(_options.ConnectionString); var connectionStringBuilder = JetProviderFactory.Instance.CreateConnectionStringBuilder();
var provider = string.IsNullOrEmpty(connectionStringBuilder.Provider) connectionStringBuilder.ConnectionString = _options.ConnectionString;
? JetConfiguration.OleDbDefaultProvider
: connectionStringBuilder.Provider; var provider = connectionStringBuilder.GetProvider();
if (string.IsNullOrEmpty(provider))
{
provider = JetConfiguration.OleDbDefaultProvider;
}
builder builder
.Append("CREATE DATABASE ") .Append("CREATE DATABASE ")

@ -0,0 +1,17 @@
using System.Data.Common;
namespace System.Data.Jet
{
public static class DbConnectionStringBuilderExtensions
{
private const string ProviderKey = "Provider";
public static string GetProvider(this DbConnectionStringBuilder source)
=> source.TryGetValue(ProviderKey, out var providerName)
? providerName as string
: null;
public static void SetProvider(this DbConnectionStringBuilder source, string value)
=> source[ProviderKey] = value;
}
}

@ -66,9 +66,7 @@ namespace System.Data.Jet
/// </returns> /// </returns>
public override DbConnectionStringBuilder CreateConnectionStringBuilder() public override DbConnectionStringBuilder CreateConnectionStringBuilder()
{ {
OleDbConnectionStringBuilder oleDbConnectionStringBuilder = new OleDbConnectionStringBuilder(); return new OleDbConnectionStringBuilder();
return oleDbConnectionStringBuilder;
} }
/// <summary> /// <summary>

@ -97,6 +97,7 @@
<Compile Include="LogHelper.cs" /> <Compile Include="LogHelper.cs" />
<Compile Include="Messages.cs" /> <Compile Include="Messages.cs" />
<Compile Include="OleDbColumnFlagEnum.cs" /> <Compile Include="OleDbColumnFlagEnum.cs" />
<Compile Include="DbConnectionStringBuilderExtensions.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs" /> <Compile Include="Properties\Resources.Designer.cs" />
<Compile Include="XmlObjectSerializer.cs" /> <Compile Include="XmlObjectSerializer.cs" />

Loading…
Cancel
Save