Beispiel #1
0
        public static string Render(DbContextTemplate configuration)
        {
            var template = new Template(TemplateContent.DbContext, StartDelimiter, EndDelimiter);

            template.Add(SharedTemplateKeys.GeneratedCodeDisclaimer, TemplateContent.GeneratedCodeDisclaimer);
            template.Add(SharedTemplateKeys.ObjectNamespace, configuration.Namespace);
            template.Add(SharedTemplateKeys.ObjectTypeName, configuration.TypeName);

            var dbSetBuilder = new StringBuilder();

            foreach (var dbSet in configuration.DbSets)
            {
                dbSetBuilder.AppendLine($"{Tab}{Tab}public DbSet<{dbSet.Namespace}.{dbSet.TypeName}> {dbSet.Namespace}_{dbSet.TypeName} {{ get; set; }}");
            }
            template.Add(SharedTemplateKeys.DbSets, dbSetBuilder.ToString());

            var keysBuilder = new StringBuilder();

            foreach (var dbSet in configuration.DbSets)
            {
                var text = dbSet.Keys.Count == 1
                    ? $"{Tab}{Tab}{Tab}modelBuilder.Entity<{dbSet.Namespace}.{dbSet.TypeName}>().HasKey(x => x.{dbSet.Keys.First().LegalCsharpName});"
                    : $"{Tab}{Tab}{Tab}modelBuilder.Entity<{dbSet.Namespace}.{dbSet.TypeName}>().HasKey(x => new {{{string.Join(",", dbSet.Keys.Select(x => $"x.{x.LegalCsharpName}"))}}});";
                keysBuilder.AppendLine(text);
            }
            template.Add(SharedTemplateKeys.ModelBuilderKeys, keysBuilder.ToString());

            return(template.Render());
        }
 public virtual void TransactionInterceptorManager_ExecuteTransaction_InterceptorExecuted()
 {
     DbContextTemplate.ExecuteTransaction <TestDbContext>(tx =>
     {
         LogService.Log += "Z";
     });
 }
        public void TransactionInterceptorManager_ExecuteTransaction_InterceptorExecuted()
        {
            DbContextTemplate.ExecuteTransaction <TestDbContext>(tx =>
            {
                DbContextTemplate.RegisterTransactionCallback(() => Logger.Log += "A");

                Logger.Log += "B";

                DbContextTemplate.ExecuteTransaction <TestDbContext>(tx =>
                {
                    DbContextTemplate.RegisterTransactionCallback(() => Logger.Log += "C");

                    Logger.Log += "D";

                    DbContextTemplate.ExecuteTransaction <TestDbContext>(tx =>
                    {
                        DbContextTemplate.RegisterTransactionCallback(() => Logger.Log += "E");

                        Logger.Log += "F";
                    });
                });
            });

            Assert.Equal("BDFACE", Logger.Log);
        }
        public static void GenerateDbContext()
        {
            var tableList = generateDal.GetTableList();
            DbContextTemplate dbContextTemplate = new DbContextTemplate(tableList);
            String            contentDbContext  = dbContextTemplate.TransformText();

            System.IO.File.WriteAllText(Config.DataAccessPath + "\\" + Config.DBContextName, contentDbContext, Encoding.UTF8);
        }
        public virtual void TransactionInterceptorManager_ExecuteTransactionWithException_InterceptorExecuted()
        {
            Assert.Throws <InvalidOperationException>(() => DbContextTemplate.ExecuteTransaction <TestDbContext>(tx =>
            {
                LogService.Log += "Z";

                throw new InvalidOperationException();
            }));
        }
Beispiel #6
0
        public void TransactionInterceptorManager_ExecuteTransaction_InterceptorExecuted()
        {
            DbContextTemplate.ExecuteTransaction <TestDbContext>(tx =>
            {
                LogService.Log += "Z";
            });

            Assert.Equal("AZB", LogService.Log);
        }
        public void ScanHangfireComponentsOnClient()
        {
            DbContextTemplate.ExecuteTransaction <TestDbContext, object>(ctx =>
            {
                ThumbnailTaskClient.CreateThumbnail();

                return(null);
            });

            HfClientMock.Verify(x => x.Create(
                                    It.Is <Job>(job => job.Method.Name == "CreateThumbnail"),
                                    It.IsAny <EnqueuedState>()));
        }
Beispiel #8
0
        private void GenerateDataContext(EntityContext entityContext)
        {
            var directory = this.Options.Data.Context.Directory;
            var file      = entityContext.ContextClass + ".cs";
            var path      = Path.Combine(directory, file);

            this._logger.LogInformation(File.Exists(path)
                ? $"Updating data context class: {file}"
                : $"Creating data context class: {file}");

            var template = new DbContextTemplate(entityContext, this.Options);

            template.WriteCode(path);
        }
Beispiel #9
0
        public override void Transform()
        {
            CreateFolders(projectName);

            CopyFiles(SourceLibrary);

            // traverse every file in the API folder and replace namespace
            GenerateGeneralFiles(projectName);

            // create Global.asax
            var gat = new GlobalAsaxTemplate(projectName, Modules);

            TransformText(gat, $"{OutputFolder}\\{projectName}\\Global.asax.cs");

            // create web api .csproj file
            var webApiCsProjTemplate = new WebApiCsProjTemplate(projectName, Modules);

            TransformText(webApiCsProjTemplate, $"{OutputFolder}\\{projectName}\\{projectName}.csproj");

            // create business .csproj file
            var businessCsProjTemplate = new BusinessCsProjTemplate(projectName, Modules);

            TransformText(businessCsProjTemplate, $"{OutputFolder}\\{projectName}.Business\\{projectName}.Business.csproj");

            // create contracts .csproj file
            var contractsCsProjTemplate = new ContractsCsProjTemplate(projectName, Modules);

            TransformText(contractsCsProjTemplate, $"{OutputFolder}\\{projectName}.Contracts\\{projectName}.Contracts.csproj");

            // create data access .csproj file
            var dataAccessCsProjTemplate = new DataAccessCsProjTemplate(projectName);

            TransformText(dataAccessCsProjTemplate, $"{OutputFolder}\\{projectName}.DataAccess\\{projectName}.DataAccess.csproj");

            // create DbContext file
            var dbContextTemplate = new DbContextTemplate(projectName, Modules);

            TransformText(dbContextTemplate, $"{OutputFolder}\\{projectName}.DataAccess\\{projectName}Context.cs");

            CreateModules();
        }
 public DomainEventsDbContextDecorator(DbContextTemplate template)
 {
     _template = template;
 }
Beispiel #11
0
 public IdentityDbContextDecorator(DbContextTemplate template, Engine.IApplication application)
 {
     _template    = template;
     _application = application;
 }