Files
Umbraco-CMS/src/Umbraco.Web/UmbracoDbProviderFactoryCreator.cs

66 lines
2.1 KiB
C#

using System;
using System.Data.Common;
using System.Data.SqlServerCe;
using Umbraco.Core;
using Umbraco.Core.Migrations.Install;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.SqlSyntax;
namespace Umbraco.Web
{
public class UmbracoDbProviderFactoryCreator : IDbProviderFactoryCreator
{
private readonly string _defaultProviderName;
public UmbracoDbProviderFactoryCreator(string defaultProviderName)
{
_defaultProviderName = defaultProviderName;
}
public DbProviderFactory CreateFactory()
{
return CreateFactory(_defaultProviderName);
}
public DbProviderFactory CreateFactory(string providerName)
{
if (string.IsNullOrEmpty(providerName)) return null;
return DbProviderFactories.GetFactory(providerName);
}
// gets the sql syntax provider that corresponds, from attribute
public ISqlSyntaxProvider GetSqlSyntaxProvider(string providerName)
{
switch (providerName)
{
case Constants.DbProviderNames.SqlCe:
return new SqlCeSyntaxProvider();
case Constants.DbProviderNames.SqlServer:
return new SqlServerSyntaxProvider();
default:
throw new InvalidOperationException($"Unknown provider name \"{providerName}\"");
}
}
public IBulkSqlInsertProvider CreateBulkSqlInsertProvider(string providerName)
{
switch (providerName)
{
case Constants.DbProviderNames.SqlCe:
return new SqlCeBulkSqlInsertProvider();
case Constants.DbProviderNames.SqlServer:
return new SqlServerBulkSqlInsertProvider();
default:
return new BasicBulkSqlInsertProvider();
}
}
public void CreateDatabase()
{
var engine = new SqlCeEngine(DatabaseBuilder.EmbeddedDatabaseConnectionString);
engine.CreateDatabase();
}
}
}