public static DbMigrationProvider GetProvider(DbSetting dbSetting) { DbMigrationProvider provider = null; //ISqlConverter Factory switch (dbSetting.ProviderName) { case DbConnectionSchema.Provider_SqlClient: provider = new SqlServerMigrationProvider(); break; case DbConnectionSchema.Provider_SqlCe: provider = new SqlServerCeMigrationProvider(); break; //case "System.Data.Odbc": // return new ODBCProvider(); default: if (DbConnectionSchema.IsOracleProvider(dbSetting)) { provider = new OracleMigrationProvider(); break; } throw new NotSupportedException("This type of database is not supportted now:" + dbSetting.ProviderName); } provider.DbSetting = dbSetting; return provider; }
public DbMetaReader(DbSetting dbSetting) { if (dbSetting == null) throw new ArgumentNullException("dbSetting"); this._dbSetting = dbSetting; this._db = new DbAccesser(dbSetting); }
internal ManagedConnectionDbAccesser(DbSetting dbSetting) { if (dbSetting == null) throw new ArgumentNullException("dbSetting"); _connectionManager = TransactionDependentConnectionManager.GetManager(dbSetting); _dba = new DbAccesser(dbSetting, _connectionManager.Connection); }
/// <summary> /// 构造一个本地事务代码块 /// </summary> /// <param name="dbSetting">数据库配置</param> /// <param name="level"> /// 此级别只在最外层的代码块中有效。 /// </param> public LocalTransactionBlock(DbSetting dbSetting, IsolationLevel level) : base(Context) { this._dbSetting = dbSetting; this._level = level; var name = LocalContextName(_dbSetting.Database); this.EnterScope(name); }
public RafyDbMigrationContext(DbSetting dbSetting) : base(dbSetting) { this.ManualMigrations = new RafyUserMigrations(); this.ClassMetaReader = new ClassMetaReader(this.DbSetting); //this.DbVersionProvider = new RafyDbVersionProvider(); //如果需要使用 DbHistoryHistory 库来记录升级日志,可使用以下代码。 //this.HistoryRepository = new DbHistoryRepository(); }
/// <summary> /// 根据数据库配置来创建对应数据库的批量导入器。 /// </summary> /// <param name="setting"></param> /// <returns></returns> public static IBatchImporter CreateImporter(DbSetting setting) { switch (setting.ProviderName) { case DbSetting.Provider_SqlClient: return new SqlBatchImporter(); default: if (DbSetting.IsOracleProvider(setting)) { return new OracleBatchImporter(); } throw new NotSupportedException("目前不支持该类型数据库的批量导入:" + setting.ProviderName); } }
public static TransactionDependentConnectionManager GetManager(DbSetting dbSetting) { var res = new TransactionDependentConnectionManager(); res._block = LocalTransactionBlock.GetWholeScope(dbSetting.Database); if (res._block != null) { res._connection = res._block.WholeTransaction.Connection; } else { //没有定义事务范围时,无需共享连接。 res._connection = dbSetting.CreateConnection(); res._connection.Open(); } res._dbSetting = dbSetting; return res; }
private ReturnData <dynamic> GetProcessAmount(string userCode, string project, string payeCode, decimal deductionAmount) { try { string connetionString = DbSetting.ConnectionString(_configuration, "Unisol"); SqlConnection connection = new SqlConnection(connetionString); connection.Open(); var processAmountQuery = $"SELECT ISNULL(hrpIPProcess.[{payeCode}], 0) as Amount, Project FROM hrpIPProcess where EmpNo = '{userCode}' and Project = '{project}'"; var sqlCommand = new SqlCommand(processAmountQuery, connection); var reader = sqlCommand.ExecuteReader(); var deductions = new List <dynamic>(); while (reader.Read()) { var projectName = reader[1].ToString(); decimal.TryParse(reader[0].ToString(), out decimal processAmount); deductionAmount = deductionAmount < 0 ? processAmount : deductionAmount; deductions.Add(new { projectName, deductionAmount }); } sqlCommand.Dispose(); connection.Close(); return(new ReturnData <dynamic> { Success = true, Data = deductions }); } catch (Exception ex) { return(new ReturnData <dynamic> { Success = false, Message = "Sorry, An error occurred" }); } }
/// <summary> /// 根据数据库配置获取一个连接管理器 /// </summary> /// <param name="dbSetting"></param> /// <returns></returns> public static ConnectionManager GetManager(DbSetting dbSetting) { var ctxName = GetContextName(dbSetting); lock (_lock) { var items = AppContext.Items; object value = null; items.TryGetValue(ctxName, out value); var mgr = value as ConnectionManager; if (mgr == null) { mgr = new ConnectionManager(dbSetting); items.Add(ctxName, mgr); } mgr.AddRef(); return(mgr); } }
/// <summary> /// 以快速键值对照来获取 DbProviderFactory。 /// </summary> /// <param name="provider"></param> /// <returns>返回DbProviderFactory类型的具体对象实例</returns> public static DbProviderFactory GetFactory(string provider) { //ISqlConverter Factory switch (provider) { case DbSetting.Provider_SqlClient: if (_sql == null) { _sql = DbProviderFactories.GetFactory(DbSetting.Provider_SqlClient); } return(_sql); case DbSetting.Provider_SqlCe: if (_sqlCe == null) { _sqlCe = DbProviderFactories.GetFactory(DbSetting.Provider_SqlCe); } return(_sqlCe); //PatrickLiu增加的有关获取MySql的Provider工厂类 case DbSetting.Provider_MySql: if (_mySql == null) { _mySql = DbProviderFactories.GetFactory(DbSetting.Provider_MySql); } return(_mySql); default: if (DbSetting.IsOracleProvider(provider)) { if (_oracle == null) { _oracle = DbProviderFactories.GetFactory(provider); } return(_oracle); } return(DbProviderFactories.GetFactory(provider)); //throw new NotSupportedException("This type of database is not supportted now:" + provider); } }
public void DMT_AlterColumn_DbType() { if (IsTestDbSQLite()) { return; } this.Test(destination => { var taskTable = destination.FindTable("Task"); taskTable.Columns.Remove(taskTable.FindColumn("Name")); taskTable.AddColumn("Name", DbType.Xml); }, result => { var table = result.FindTable("Task"); var column = table.FindColumn("Name"); Assert.IsTrue(column != null); var p = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName).ProviderName; Assert.IsTrue(dbTypeConverter.IsCompatible(column.DbType, DbType.Xml)); }); }
public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder) { // EntityFramework Repository Context & Repositories var dbset = DbSetting.FindOrCreate("LCL"); var efDataProviderManager = new EfDataProviderManager(dbset); var dataProvider = efDataProviderManager.LoadDataProvider(); dataProvider.InitConnectionFactory(); builder.Register(c => dbset).As <DbSetting>(); builder.Register <LclDbContext>(c => new EFTestContext(dbset.ConnectionString)).As(typeof(IRepositoryContext)).Named <IRepositoryContext>(dbset.Name).InstancePerLifetimeScope(); builder.Register <IRepositoryContext>(c => new EFTestContext(dbset.ConnectionString)).Named <IRepositoryContext>(dbset.Name).InstancePerLifetimeScope(); builder.RegisterType <CategorizationRepository>().As <ICategorizationRepository>().InstancePerLifetimeScope(); builder.RegisterType <CategoryRepository>().As <ICategoryRepository>().InstancePerLifetimeScope(); builder.RegisterType <ProductRepository>().As <IProductRepository>().InstancePerLifetimeScope(); builder.RegisterType <SalesOrderRepository>().As <ISalesOrderRepository>().InstancePerLifetimeScope(); builder.RegisterType <ShoppingCartItemRepository>().As <IShoppingCartItemRepository>().InstancePerLifetimeScope(); builder.RegisterType <ShoppingCartRepository>().As <IShoppingCartRepository>().InstancePerLifetimeScope(); builder.RegisterType <RoleRepository>().As <IRoleRepository>().InstancePerLifetimeScope(); builder.RegisterType <UserRoleRepository>().As <IUserRoleRepository>().InstancePerLifetimeScope(); builder.RegisterType <UserRepository>().As <IUserRepository>().InstancePerLifetimeScope(); // Event Handlers builder.RegisterType <SendEmailHandler>().As <IEventHandler <OrderDispatchedEvent> >().InstancePerLifetimeScope(); builder.RegisterType <SendEmailHandler>().As <IEventHandler <OrderConfirmedEvent> >().InstancePerLifetimeScope(); // Domain Event Handlers builder.RegisterType <GetUserOrdersEvent>().As <IDomainEventHandler <GetUserOrdersEvent> >().InstancePerLifetimeScope(); builder.RegisterType <OrderDispatchedEventHandler>().As <IDomainEventHandler <OrderDispatchedEvent> >().InstancePerLifetimeScope(); builder.RegisterType <OrderConfirmedEventHandler>().As <IDomainEventHandler <OrderConfirmedEvent> >().InstancePerLifetimeScope(); // Event Aggregator // Server builder.RegisterType <OrderService>().As <IOrderService>().InstancePerLifetimeScope(); System.Diagnostics.Debug.WriteLine(Order + " init plugin LCL.Plugin.EasyUI.UCenter"); }
public void DMT_RefreshComments() { using (var context = new RafyDbMigrationContext(UnitTestEntityRepositoryDataProvider.DbSettingName)) { context.RefreshComments(); if (!DbSetting.IsOracleProvider(context.DbSetting)) { //数据库数据 using (var db = DbAccesserFactory.Create(context.DbSetting)) { Func <string, DataRow[]> queryComments = tableName => { var table = db.QueryDataTable( @"select t.name tableName, c.name columnName, p.Value Comment from sys.all_columns c join sys.tables t on c.object_id = t.object_id join sys.extended_properties p on p.major_id = c.object_id and p.minor_id = c.column_id where t.name = '" + tableName + "'"); return(table.Rows.Cast <DataRow>().ToArray()); }; var rows = queryComments("ARTICLE"); Assert.IsTrue(rows.Any(r => r["columnName"].ToString() == "Id"), "主键必须有注释。"); Assert.IsTrue(rows.Any(r => r["columnName"].ToString() == "AdministratorId"), "外键必须有注释。"); Assert.IsTrue(rows.Any(r => r["columnName"].ToString() == "CreatedTime"), "扩展属性必须有注释。"); rows = queryComments("Roles"); var roleTypeDesc = rows.FirstOrDefault(r => r["columnName"].ToString() == "RoleType"); Assert.IsNotNull(roleTypeDesc, "枚举属性必须有注释。"); var comment = roleTypeDesc["Comment"].ToString(); Assert.AreEqual(comment, @"角色的类型 0:(Normal, 一般) 1:(Administrator, 管理员)"); //WF_ 开头的动态属性。 } } } }
public static ISqlProvider Create(string provider) { //ISqlConverter Factory switch (provider) { case DbSetting.Provider_Odbc: if (_odbcConverter == null) { _odbcConverter = new ODBCProvider(); } return(_odbcConverter); case DbSetting.Provider_SqlClient: case DbSetting.Provider_SqlCe: if (_sqlConverter == null) { _sqlConverter = new SqlServerProvider(); } return(_sqlConverter); default: if (DbSetting.IsOracleProvider(provider)) { if (_oracleConverter == null) { _oracleConverter = new OracleProvider(); } return(_oracleConverter); } if (_sqlConverter == null) { _sqlConverter = new SqlServerProvider(); } return(_sqlConverter); } }
private string GetMaxNo(string refQuery) { var connetionString = DbSetting.ConnectionString(_configuration, "Portal"); SqlConnection connection = new SqlConnection(connetionString); if (connection.State == ConnectionState.Closed) { connection.Open(); } var sqlCommand = new SqlCommand(refQuery, connection); var reader = sqlCommand.ExecuteReader(); var refNo = ""; while (reader.Read()) { refNo = reader[0]?.ToString() ?? ""; } sqlCommand.Dispose(); connection.Close(); return(refNo); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var oldMembershipConnection = DbSetting.ConnectionString(Configuration, "OldMembership"); var membership = DbSetting.ConnectionString(Configuration, "Portal"); var unisolDbConnection = DbSetting.ConnectionString(Configuration, "Unisol"); services.AddMvc(); services.AddDbContext <PortalCoreContext>(options => options.UseSqlServer(membership)); services.AddDbContext <OldMembershipContext>( options => options.UseSqlServer(oldMembershipConnection) ); services.AddDbContext <UnisolAPIdbContext>(options => options.UseSqlServer(unisolDbConnection) ); services.AddSingleton <IWeatherProvider, WeatherProviderFake>(); services.AddSingleton <IUnisolApiProxy, UnisolApiProxy>(); services.AddSingleton <IEmailConfiguration>(Configuration.GetSection("EmailConfiguration").Get <EmailConfiguration>()); services.AddTransient <IEmailService, EmailService>(); services.AddSingleton <IConfiguration>(Configuration); services.AddTransient <IPortalServices, PortalServices>(); services.AddTransient <IUserManagementService, UserManagementService>(); services.AddTransient <IAcademicsServices, AcademicsServices>(); services.AddTransient <ICroneJobs, CroneJobs>(); services.AddOptions(); services.AddHangfire(x => x.UseSqlServerStorage(membership)); //services.AddAuthentication(options => //{ // options.DefaultAuthenticateScheme = CustomAuthOptions.DefaultScheme; // options.DefaultChallengeScheme = CustomAuthOptions.DefaultScheme; //}) // // Call custom authentication extension method // .AddCustomAuth(options => // { // // Configure single or multiple passwords for authentication // options.AuthKey = "custom auth key"; // }); }
/// <summary> /// 以快速键值对照来获取 DbProviderFactory。 /// </summary> /// <param name="provider"></param> /// <returns>返回DbProviderFactory类型的具体对象实例</returns> public static DbProviderFactory GetFactory(string provider) { switch (provider) { case DbSetting.Provider_SqlClient: if (_sql == null) { #if NET45 _sql = DbProviderFactories.GetFactory(DbSetting.Provider_SqlClient); #endif #if NS2 _sql = LoadFromAssembly("System.Data.SqlClient.SqlClientFactory, System.Data.SqlClient"); //_sql = System.Data.SqlClient.SqlClientFactory.Instance; #endif } return(_sql); case DbSetting.Provider_SQLite: if (_sqlite == null) { _sqlite = LoadFromAssembly("System.Data.SQLite.SQLiteFactory, System.Data.SQLite"); } return(_sqlite); case DbSetting.Provider_SqlCe: if (_sqlCe == null) { #if NET45 _sqlCe = DbProviderFactories.GetFactory(DbSetting.Provider_SqlCe); #endif #if NS2 _sqlCe = LoadFromAssembly("System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe"); //_sqlCe = System.Data.SqlServerCe.SqlCeProviderFactory.Instance; #endif } return(_sqlCe); case DbSetting.Provider_MySql: if (_mySql == null) { #if NET45 _mySql = DbProviderFactories.GetFactory(DbSetting.Provider_MySql); #endif #if NS2 _mySql = LoadFromAssembly("MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data"); //_mySql = MySql.Data.MySqlClient.MySqlClientFactory.Instance; #endif } return(_mySql); default: if (DbSetting.IsOracleProvider(provider)) { if (_oracle == null) { #if NET45 _oracle = DbProviderFactories.GetFactory(provider); #endif #if NS2 _oracle = LoadFromAssembly("Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess"); //_oracle = Oracle.ManagedDataAccess.Client.OracleClientFactory.Instance; #endif } return(_oracle); } #if NET45 return(DbProviderFactories.GetFactory(provider)); #endif #if NS2 return(System.Data.SqlClient.SqlClientFactory.Instance); #endif //throw new NotSupportedException("This type of database is not supportted now:" + provider); } }
/// <summary> /// Throws an exception if the 'batchSize' is greater than 1 and the multiple statement execution is not being supported /// based on the settings of the <see cref="IDbSetting"/> object. /// </summary> /// <param name="batchSize">The batch size to be evaluated.</param> protected void ValidateMultipleStatementExecution(int batchSize = Constant.DefaultBatchOperationSize) { if (DbSetting.IsMultiStatementExecutable == false && batchSize > 1) { throw new NotSupportedException($"Multiple execution is not supported based on the current database setting '{DbSetting.GetType().FullName}'. Consider setting the batchsize to 1."); } }
public ClassMetaReader(DbSetting dbSetting) { this._dbSetting = dbSetting; this.IgnoreTables = new List<string>(); }
private ConnectionManager(DbSetting dbSetting) { _dbSetting = dbSetting; _connection = dbSetting.CreateConnection(); _connection.Open(); }
private static string GetContextName(DbSetting dbSetting) { return "__db:" + dbSetting.Name; }
/// <summary> /// 构造一个事务块 /// </summary> /// <param name="dbSetting">整个数据库的配置名</param> /// <param name="level">事务的孤立级别</param> public SingleConnectionTrasactionScope(DbSetting dbSetting, IsolationLevel level) : base(dbSetting, level) { }
public DbMigrationContext(DbSetting dbSetting) { if (dbSetting == null) throw new ArgumentNullException("dbSetting"); this.DbSetting = dbSetting; this.RunDataLossOperation = DataLossOperation.None; this._dbProvider = DbMigrationProviderFactory.GetProvider(dbSetting); this._runGenerator = this._dbProvider.CreateRunGenerator(); this.DatabaseMetaReader = this._dbProvider.CreateSchemaReader(); }
private static bool IsTestDbSQLite() { var dbSettings = DbSetting.FindOrCreate(BackUpDbSettingName); return(dbSettings.ProviderName == DbSetting.Provider_SQLite); }
public OracleMetaReader(DbSetting dbSetting) : base(dbSetting) { }
internal static Property[] GetProperties <T>() => DbSetting.GetEntity <T>().Properties;
/// <summary> /// 根据数据库配置获取一个连接管理器 /// </summary> /// <param name="dbSetting"></param> /// <returns></returns> public static ConnectionManager GetManager(DbSetting dbSetting) { var ctxName = GetContextName(dbSetting); lock (_lock) { var items = AppContext.Items; object value = null; items.TryGetValue(ctxName, out value); var mgr = value as ConnectionManager; if (mgr == null) { mgr = new ConnectionManager(dbSetting); items.Add(ctxName, mgr); } mgr.AddRef(); return mgr; } }
internal static void FormattingXml(Model model, DatabaseModel databaseModel) { var entityTypes = model.GetEntityTypes(); var newConfig = new DbSetting { Namespaces = DbSetting.Namespaces?.OrderBy(o => o.Value).ToArray(), Classes = Array.Empty <Class>(), }; var list = new List <Class>(); foreach (var table in databaseModel.Tables.OrderBy(o => o.Name)) { // TODO: may has issue. var entityType = entityTypes.FirstOrDefault(o => table.Name.Replace("_", string.Empty).Equals(o.Name, StringComparison.InvariantCultureIgnoreCase)); var configEntity = DbSetting.Classes?.FirstOrDefault(o => o.Name == entityType.Name); var entity = new Class { Name = entityType.Name, Table = table.GetType() == typeof(DatabaseView) ? null : table.Name, View = table.GetType() == typeof(DatabaseView) ? table.Name : null, Summary = string.IsNullOrEmpty(table.Comment) ? configEntity?.Summary : table.Comment, PrimaryKey = table.PrimaryKey == null ? null : string.Join(",", table.PrimaryKey.Columns.Select(o => o.Name)), }; if (entity.Name == entity.TableName) { entity.Table = null; } var properties = entityType.GetProperties(); var propertyList = new List <CodeGenerator.Property>(); foreach (var column in table.Columns) { var property = properties.FirstOrDefault(o => o.Name.Equals(column.Name.Replace("_", string.Empty), StringComparison.InvariantCultureIgnoreCase)); var configProperty = configEntity?.Properties.FirstOrDefault(o => o.Name == property.Name); string fk = string.Empty; // 数据库配置 if (column.Table.ForeignKeys.SelectMany(o => o.Columns).Contains(column)) { foreach (var item in table.ForeignKeys) { if (item.Columns.Contains(column)) { fk = $"{item.PrincipalTable.Name}.{item.PrincipalColumns[0].Name}"; } } } if (string.IsNullOrEmpty(fk)) { fk = configProperty?.FK; } var p = new CodeGenerator.Property { Name = property.Name, DefaultValueSql = column.DefaultValueSql, Column = column.Name, ValueGenerated = column.ValueGenerated?.ToString(), Summary = string.IsNullOrEmpty(column.Comment) ? configProperty?.Summary : column.Comment, Type = configProperty?.Type, Converter = configProperty?.Converter, FK = fk, }; if (p.Name == p.ColumnName) { p.Column = null; } propertyList.Add(p); } list.Add(entity); entity.Properties = propertyList.ToArray(); } newConfig.Classes = list.ToArray(); string xmlSerialized = Serialize(newConfig); File.WriteAllText(DbSettingFile, xmlSerialized, Encoding.UTF8); }
public void MT_Transaction_GetCurrentTransactionBlock2() { using (var tranOuter = RF.TransactionScope(DbSettingNames.RafyPlugins)) { using (var tranInner1 = RF.TransactionScope(DbSettingNames.RafyPlugins)) { using (var tranInner2 = RF.TransactionScope(DbSettingNames.RafyPlugins)) { var currentScope = LocalTransactionBlock.GetCurrentTransactionBlock(DbSetting.FindOrCreate(DbSettingNames.RafyPlugins)); Assert.AreEqual(currentScope, tranInner2); } } } }
public SqlServerMetaReader(DbSetting dbSetting) : base(dbSetting) { }
internal ClassMetaReader(DbSetting dbSetting) { this._dbSetting = dbSetting; this.IgnoreTables = new List <string>(); this.EntityDbSettingName = this._dbSetting.Name; }
/// <summary> /// 构造一个事务块 /// </summary> /// <param name="dbSetting">整个数据库的配置名</param> public SingleConnectionTrasactionScope(DbSetting dbSetting) : base(dbSetting, IsolationLevel.Unspecified) { }
/// <summary> /// 通过数据库配置名的代理:实体仓库,构造一个 单连接事务块。 /// </summary> /// <param name="dbSetting"></param> /// <returns></returns> public static SingleConnectionTransactionScope TransactionScope(DbSetting dbSetting) { return(new SingleConnectionTransactionScope(dbSetting)); }
public EfDataProviderManager(DbSetting settings) : base(settings) { }
public LongTimeDbAccesser(DbSetting setting) : base(setting) { }
private static string GetContextName(DbSetting dbSetting) { return("__db:" + dbSetting.Name); }
/// <summary> /// 构造函数 初始化配置 /// </summary> /// <param name="dbSetting">数据库配置信息</param> public MySqlMetaReader(DbSetting dbSetting) : base(dbSetting) { }
/// <summary> /// 构造函数 初始化配置 /// </summary> /// <param name="dbSetting">数据库配置信息</param> public SQLiteMetaReader(DbSetting dbSetting) : base(dbSetting) { }
/// <summary> /// 根据配置文件,构造一个数据库访问器。 /// </summary> /// <param name="dbSettingName">数据库配置的名称。</param> /// <returns></returns> public static IDbAccesser Create(string dbSettingName) { var setting = DbSetting.FindOrCreate(dbSettingName); return(Create(setting)); }
public ClassMetaReader(DbSetting dbSetting) { this._dbSetting = dbSetting; this.IgnoreTables = new List <string>(); }
/// <summary> /// 根据配置文件,构造一个数据库访问器。 /// </summary> /// <param name="dbSetting">数据库配置。</param> /// <returns></returns> public static IDbAccesser Create(DbSetting dbSetting) { return(new ManagedConnectionDbAccesser(dbSetting)); }
/// <summary> /// 通过数据库配置名构造一个 单连接事务块。 /// </summary> /// <param name="dbSetting"></param> /// <returns></returns> public static SingleConnectionTransactionScope TransactionScope(string dbSetting) { return(new SingleConnectionTransactionScope(DbSetting.FindOrCreate(dbSetting))); }
/// <summary> /// 根据配置文件,构造一个数据库访问器。 /// </summary> /// <param name="dbSetting">数据库配置。</param> /// <returns></returns> public static IDbAccesser Create(DbSetting dbSetting) { return new ManagedConnectionDbAccesser(dbSetting); }
/// <summary> /// 通过数据库配置名的代理:实体仓库,构造一个 单连接事务块。 /// </summary> /// <param name="dbSetting">整个数据库的配置名</param> /// <param name="level">事务的孤立级别</param> /// <returns></returns> public static SingleConnectionTransactionScope TransactionScope(DbSetting dbSetting, IsolationLevel level) { return(new SingleConnectionTransactionScope(dbSetting, level)); }
public RafyDbMigrationContext(string dbSetting) : this(DbSetting.FindOrCreate(dbSetting)) { }