Пример #1
0
        public async Task ScaffoldingProjectForWideWorldImportersDbAsync()
        {
            // Create database factory
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString     = "server=(local);database=WideWorldImporters;integrated security=yes;",
                    ImportTableFunctions = true,
                    Exclusions           =
                    {
                        "dbo.sysdiagrams",
                        "dbo.fn_diagramobjects"
                    }
                }
            };

            // Import database
            var database = await databaseFactory.ImportAsync();

            // Create instance of Entity Framework Core project
            var project = EntityFrameworkCoreProject
                          .CreateForV2x("WideWorldImporters.Core", database, @"C:\Temp\CatFactory.EntityFrameworkCore\WideWorldImporters.Core");

            // Apply settings for Entity Framework Core project
            project.GlobalSelection(settings => settings.ForceOverwrite = true);

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
        public async Task ScaffoldingWithEventHandlersForOnlineStoreDbAsync()
        {
            // Create database factory
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString = "server=(local);database=OnlineStore;integrated security=yes;"
                }
            };

            // Import database
            var database = await databaseFactory.ImportAsync();

            // Create instance of Entity Framework Core project
            var project = EntityFrameworkCoreProject
                          .CreateForV2x("ScaffoldingEventHandlers.OnlineStore.Core", database, @"C:\Temp\CatFactory.EntityFrameworkCore\ScaffoldingEventHandlers.OnlineStore.Core");

            // Apply settings for Entity Framework Core project
            project.GlobalSelection(settings => settings.ForceOverwrite = true);

            project.ScaffoldingDefinition += (sender, args) =>
            {
                if (args.CodeBuilder.ObjectDefinition is EntityClassDefinition entityDef)
                {
                    foreach (var prop in entityDef.Properties)
                    {
                        if (prop.Type == "string")
                        {
                            prop.Type = "string?";
                        }
                    }
                }
                else if (args.CodeBuilder.ObjectDefinition is DbContextClassDefinition dbContextDef)
                {
                    dbContextDef.Documentation.Summary = "foo bar zaz";

                    foreach (var prop in dbContextDef.Properties)
                    {
                        // todo: Add
                        prop.InitializationValue = "null";
                    }
                }
            };

            project.ScaffoldedDefinition += (sender, args) =>
            {
                // Check if file exists
            };

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
Пример #3
0
        public async Task ScaffoldingProjectWithRepositoriesForOnlineStoreDbAsync()
        {
            // Create database factory
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString     = "server=(local);database=OnlineStore;integrated security=yes;",
                    ImportTableFunctions = true,
                    Exclusions           =
                    {
                        "dbo.sysdiagrams",
                        "dbo.fn_diagramobjects"
                    }
                }
            };

            // Import database
            var database = await databaseFactory.ImportAsync();

            // Create instance of Entity Framework Core project
            var project = EntityFrameworkCoreProject
                          .CreateForV2x("OnlineStore.Core", database, @"C:\Temp\CatFactory.EntityFrameworkCore\OnlineStore.Core");

            // Apply settings for Entity Framework Core project
            project.GlobalSelection(settings =>
            {
                settings.ForceOverwrite   = true;
                settings.ConcurrencyToken = "Timestamp";
                settings.AuditEntity      = new AuditEntity
                {
                    CreationUserColumnName       = "CreationUser",
                    CreationDateTimeColumnName   = "CreationDateTime",
                    LastUpdateUserColumnName     = "LastUpdateUser",
                    LastUpdateDateTimeColumnName = "LastUpdateDateTime"
                };

                settings.AddConfigurationForUniquesInFluentAPI     = true;
                settings.AddConfigurationForForeignKeysInFluentAPI = true;
                settings.DeclareNavigationProperties = true;
            });

            project.Selection("Sales.OrderHeader", settings =>
            {
                settings.EntitiesWithDataContracts = true;
                settings.AddConfigurationForForeignKeysInFluentAPI = true;
                settings.DeclareNavigationProperties = true;
            });

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
Пример #4
0
        public async Task ScaffoldingProjectForNorthwindDbAsync()
        {
            // Import database
            var factory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString       = "server=(local);database=Northwind;integrated security=yes;",
                    ImportScalarFunctions  = true,
                    ImportTableFunctions   = true,
                    ImportStoredProcedures = true,
                    Exclusions             =
                    {
                        "dbo.sysdiagrams",
                        "dbo.sp_alterdiagram",
                        "dbo.sp_creatediagram",
                        "dbo.sp_dropdiagram",
                        "dbo.sp_helpdiagramdefinition",
                        "dbo.sp_helpdiagrams",
                        "dbo.sp_renamediagram",
                        "dbo.sp_upgraddiagrams",
                        "dbo.fn_diagramobjects"
                    }
                }
            };

            var database = await factory.ImportAsync();

            // Create instance of Entity Framework Core Project
            var project = EntityFrameworkCoreProject
                          .CreateForV2x("Northwind.Core", database, @"C:\Temp\CatFactory.EntityFrameworkCore\Northwind.Core");

            // Apply settings for Entity Framework Core project
            project.GlobalSelection(settings =>
            {
                settings.ForceOverwrite = true;
                settings.DeclareNavigationProperties = true;
            });

            project.Selection("dbo.Orders", settings => settings.EntitiesWithDataContracts = true);

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
Пример #5
0
        public async Task ScaffoldingProjectForAdventureWorksDbAsync()
        {
            // Create instance of factory for SQL Server
            var databaseFactory = new SqlServerDatabaseFactory
            {
                DatabaseImportSettings = new DatabaseImportSettings
                {
                    ConnectionString      = "server=(local);database=AdventureWorks2017;integrated security=yes;",
                    ImportScalarFunctions = true,
                    ImportTableFunctions  = true,
                    Exclusions            =
                    {
                        "dbo.sysdiagrams",
                        "Production.Document",
                        "Production.ProductDocument"
                    },
                    ExclusionTypes =
                    {
                        "hierarchyid",
                        "geography"
                    }
                }
            };

            // Import database
            var database = await databaseFactory.ImportAsync();

            // Create instance of Entity Framework Core Project
            var project = EntityFrameworkCoreProject
                          .CreateForV2x("AdventureWorks", database, @"C:\Temp\CatFactory.EntityFrameworkCore\AdventureWorks.Core");

            // Apply settings for Entity Framework Core project
            project.GlobalSelection(settings =>
            {
                settings.ForceOverwrite = true;
                settings.DeclareNavigationProperties = true;

                settings.AddConfigurationForForeignKeysInFluentAPI = true;
            });

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
Пример #6
0
        public void ProjectScaffoldingForMockDb()
        {
            // Create instance of EF Core Project
            var project = EntityFrameworkCoreProject
                          .CreateForV2x("College.Mock", Databases.College, @"C:\Temp\CatFactory.EntityFrameworkCore\College.Mock");

            // Apply settings for EF Core project
            project.GlobalSelection(settings => settings.ForceOverwrite = true);

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
        public async Task ProjectSelectionScopeAsync()
        {
            // Arrange

            // Import database
            var database = await SqlServerDatabaseFactory
                           .ImportAsync("server=(local);database=OnlineStore;integrated security=yes;", "dbo.sysdiagrams");

            // Create instance of Entity Framework Core project
            var project = EntityFrameworkCoreProject
                          .CreateForV2x("OnlineStore", database, @"C:\Temp\CatFactory.EntityFrameworkCore\OnlineStore");

            // Act

            // Apply settings for Entity Framework Core project
            project.GlobalSelection(settings =>
            {
                settings.ForceOverwrite   = true;
                settings.ConcurrencyToken = "Timestamp";
                settings.AuditEntity      = new AuditEntity
                {
                    CreationUserColumnName       = "CreationUser",
                    CreationDateTimeColumnName   = "CreationDateTime",
                    LastUpdateUserColumnName     = "LastUpdateUser",
                    LastUpdateDateTimeColumnName = "LastUpdateDateTime"
                };
            });

            project.Selection("Sales.OrderHeader", settings => settings.EntitiesWithDataContracts = true);

            var orderHeader = database.FindTable("Sales.OrderHeader");

            var selectionForOrder = project.GetSelection(orderHeader);

            // Assert

            Assert.True(project.Selections.Count == 2);

            Assert.True(project.GlobalSelection().Settings.EntitiesWithDataContracts == false);
            Assert.True(selectionForOrder.Settings.EntitiesWithDataContracts == true);
        }
Пример #8
0
        public async Task ScaffoldingProjectWithDataAnnotationsForOnlineStoreDbAsync()
        {
            // Import database
            var database = await SqlServerDatabaseFactory
                           .ImportAsync("server=(local);database=OnlineStore;integrated security=yes;", "dbo.sysdiagrams");

            // Create instance of Entity Framework Core Project
            var project = EntityFrameworkCoreProject
                          .CreateForV2x("OnlineStoreWithDataAnnotations.Core", database, @"C:\Temp\CatFactory.EntityFrameworkCore\OnlineStoreWithDataAnnotations.Core");

            // Apply settings for Entity Framework Core project
            project.GlobalSelection(settings =>
            {
                settings.ForceOverwrite     = true;
                settings.UseDataAnnotations = true;
                settings.ConcurrencyToken   = "Timestamp";
                settings.AuditEntity        = new AuditEntity
                {
                    CreationUserColumnName       = "CreationUser",
                    CreationDateTimeColumnName   = "CreationDateTime",
                    LastUpdateUserColumnName     = "LastUpdateUser",
                    LastUpdateDateTimeColumnName = "LastUpdateDateTime"
                };
                settings.DeclareNavigationProperties = true;
            });

            project.Selection("Sales.OrderHeader", settings => settings.EntitiesWithDataContracts = true);

            // Build features for project, group all entities by schema into a feature
            project.BuildFeatures();

            // Scaffolding =^^=
            project
            .ScaffoldEntityLayer()
            .ScaffoldDataLayer();
        }
        public void DefineProjectForV2x()
        {
            var project = EntityFrameworkCoreProject.CreateForV2x("OnlineStore", new ObjectRelationalMapping.Database(), "");

            Assert.True(project.Version <= EntityFrameworkCoreVersion.Version_2_2);
        }