コード例 #1
0
        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();
            }
        }
コード例 #2
0
        /// <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);
        }