public void Test() { DatabaseManager.Delete(); DatabaseManager.Create(); try { var factory = TransactionFactoryBuilder <DatabaseContext> .New() .WithRegistry((c, b) => { b.RegisterTenantRepository(c); b.Register(() => new Repository <Models.Book>(c, c.Book)); b.Register(() => new Repository <Models.Page>(c, c.Page)); }) .WithTransaction((c, r) => new Transaction(c, r)) .Build(); var dbContextOptions = new DbContextOptionsBuilder <DatabaseContext>() .UseSqlite(DatabaseManager.ConnectionString) .EnableDetailedErrors() .EnableSensitiveDataLogging() .EnableServiceProviderCaching() .Options; var databaseContext = new DatabaseContext(dbContextOptions); using (var transaction = factory.CreateTransaction(databaseContext)) { var bookRepository = transaction.GetRepository <Models.Book>(); var pageRepository = transaction.GetRepository <Models.Page>(); Console.ReadKey(); } } catch (Exception e) { throw; } finally { DatabaseManager.Delete(); } }
/// <summary> /// Configures the factory with an EntityFramework transaction. /// </summary> /// <typeparam name="TContext">Type of database context.</typeparam> /// <param name="builder">Builder.</param> /// <param name="registryConfigurator">Registry configurator.</param> //public static TransactionFactoryBuilder<TContext> WithEfRegistry<TContext>( // this TransactionFactoryBuilder<TContext> builder, // Action<TContext, RepositoryRegistryBuilder> registryConfigurator) where TContext : DbContext //{ // builder.WithRegistry((c,b) => // { // // TODO // }); // return builder; //} /// <summary> /// Configures the factory with an EntityFramework transaction. /// </summary> /// <typeparam name="TContext">Type of database context.</typeparam> /// <param name="builder">Builder.</param> public static TransactionFactoryBuilder <TContext> WithEfTransaction <TContext>( this TransactionFactoryBuilder <TContext> builder) where TContext : DbContext { builder.WithTransaction((c, r) => new Transaction(c, r)); return(builder); }