public void ProjectScaffoldingWithDataBindingsFromMockDatabaseTest() { // Create instance of EF Core Project var project = new EntityFrameworkCoreProject { Name = "Store", Database = Databases.Store, OutputDirectory = "C:\\Temp\\CatFactory.EntityFrameworkCore\\Store.Mock.DataBindings" }; // Apply settings for EF Core project project.Settings.ForceOverwrite = true; project.Settings.EnableDataBindings = true; project.Settings.AuditEntity = new AuditEntity("CreationUser", "CreationDateTime", "LastUpdateUser", "LastUpdateDateTime"); project.Settings.ConcurrencyToken = "Timestamp"; project.Settings.EntitiesWithDataContracts.Add("Sales.Order"); // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public void ProjectScaffoldingFromExistingDatabaseTest() { // Import database var database = SqlServerDatabaseFactory .Import(LoggerMocker.GetLogger <SqlServerDatabaseFactory>(), "server=(local);database=Store;integrated security=yes;", "dbo.sysdiagrams"); // Create instance of Entity Framework Core Project var project = new EntityFrameworkCoreProject { Name = "Store", Database = database, OutputDirectory = "C:\\Temp\\CatFactory.EntityFrameworkCore\\Store" }; // Apply settings for Entity Framework Core project project.Settings.ForceOverwrite = true; project.Settings.AuditEntity = new AuditEntity("CreationUser", "CreationDateTime", "LastUpdateUser", "LastUpdateDateTime"); project.Settings.ConcurrencyToken = "Timestamp"; project.Settings.EntitiesWithDataContracts.Add("Sales.Order"); // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public void ProjectScaffoldingForNorthwindDatabaseTest() { // Import database var database = SqlServerDatabaseFactory .Import(SqlServerDatabaseFactory.GetLogger(), "server=(local);database=Northwind;integrated security=yes;", "dbo.sysdiagrams"); // Create instance of Entity Framework Core Project var project = new EntityFrameworkCoreProject { Name = "Northwind.Core", Database = database, OutputDirectory = @"C:\Temp\CatFactory.EntityFrameworkCore\Northwind.Core" }; // Apply settings for Entity Framework Core project project.GlobalSelection(settings => settings.ForceOverwrite = 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(); }
public void TestControllerScaffoldingFromStoreDatabase() { // Import database var database = SqlServerDatabaseFactory .Import(LoggerMocker.GetLogger <SqlServerDatabaseFactory>(), "server=(local);database=Store;integrated security=yes;", "dbo.sysdiagrams"); // Create instance of Entity Framework Core Project var entityFrameworkProject = new EntityFrameworkCoreProject { Name = "Store", Database = database, OutputDirectory = "C:\\Temp\\CatFactory.AspNetCore\\CatFactory.AspNetCore.Demo\\src\\Store.Core" }; // Apply settings for project entityFrameworkProject.GlobalSelection(settings => { settings.ForceOverwrite = true; settings.ConcurrencyToken = "Timestamp"; settings.AuditEntity = new AuditEntity("CreationUser", "CreationDateTime", "LastUpdateUser", "LastUpdateDateTime"); }); entityFrameworkProject.Select("Sales.Order", settings => settings.EntitiesWithDataContracts = true); // Build features for project, group all entities by schema into a feature entityFrameworkProject.BuildFeatures(); // Scaffolding =^^= entityFrameworkProject .ScaffoldEntityLayer() .ScaffoldDataLayer(); entityFrameworkProject .ScaffoldAspNetCore("Store", "C:\\Temp\\CatFactory.AspNetCore\\CatFactory.AspNetCore.Demo\\src\\Store.AspNetCore", entityFrameworkProject.Database); }
public void ProjectScaffoldingForNorthwindDatabaseTest() { // Import database var database = SqlServerDatabaseFactory .Import(LoggerMocker.GetLogger <SqlServerDatabaseFactory>(), "server=(local);database=Northwind;integrated security=yes;", "dbo.sysdiagrams"); // Create instance of Entity Framework Core Project var project = new EntityFrameworkCoreProject { Name = "Northwind", Database = database, OutputDirectory = "C:\\VsCode\\Northwind\\src" }; // Apply settings for Entity Framework Core project project.Settings.ForceOverwrite = true; // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public void ProjectScaffoldingWithModifiedNamespacesFromExistingDatabaseTest() { // Import database var database = SqlServerDatabaseFactory .Import(LoggerMocker.GetLogger <SqlServerDatabaseFactory>(), "server=(local);database=Northwind;integrated security=yes;", "dbo.sysdiagrams"); // Create instance of Entity Framework Core Project var project = new EntityFrameworkCoreProject { Name = "Northwind", Database = database, OutputDirectory = "C:\\Temp\\CatFactory.EntityFrameworkCore\\ModifiedNorthwind" }; // Apply settings for Entity Framework Core project project.Settings.ForceOverwrite = true; // Set custom namespaces project.Namespaces.EntityLayer = "EL"; project.Namespaces.DataLayer = "DL"; project.Namespaces.Contracts = "Interfaces"; project.Namespaces.DataContracts = "Dtos"; project.Namespaces.Repositories = "Implementations"; // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public void TestScaffoldingWebApiFromOnlineStoreDatabase() { // Import database var database = SqlServerDatabaseFactory .Import("server=(local);database=OnlineStore;integrated security=yes;", "dbo.sysdiagrams"); // Create instance of Entity Framework Core Project var entityFrameworkProject = new EntityFrameworkCoreProject { Name = "OnlineStore.Core", Database = database, OutputDirectory = "C:\\Temp\\CatFactory.AspNetCore\\OnlineStore.Core" }; // Apply settings for project entityFrameworkProject.GlobalSelection(settings => { settings.ForceOverwrite = true; settings.ConcurrencyToken = "Timestamp"; settings.AuditEntity = new AuditEntity { CreationUserColumnName = "CreationUser", CreationDateTimeColumnName = "CreationDateTime", LastUpdateUserColumnName = "LastUpdateUser", LastUpdateDateTimeColumnName = "LastUpdateDateTime" }; }); entityFrameworkProject.Selection("Sales.OrderHeader", settings => settings.EntitiesWithDataContracts = true); // Build features for project, group all entities by schema into a feature entityFrameworkProject.BuildFeatures(); // Scaffolding =^^= entityFrameworkProject .ScaffoldEntityLayer() .ScaffoldDataLayer(); var aspNetCoreProject = entityFrameworkProject .CreateAspNetCoreProject("OnlineStore.WebAPI", "C:\\Temp\\CatFactory.AspNetCore\\OnlineStore.WebAPI"); aspNetCoreProject.GlobalSelection(settings => settings.ForceOverwrite = true); // Add event handlers to before and after of scaffold aspNetCoreProject.ScaffoldingDefinition += (source, args) => { // Add code to perform operations with code builder instance before to create code file }; aspNetCoreProject.ScaffoldedDefinition += (source, args) => { // Add code to perform operations after of create code file }; aspNetCoreProject.ScaffoldAspNetCore(); }
static void B() { // Import database var factory = new SqlServerDatabaseFactory() { ConnectionString = key }; var database = factory.Import(); // Create instance of Entity Framework Core Project var entityFrameworkProject = new EntityFrameworkCoreProject() { Name = "OnLineStore.Core", Database = database, OutputDirectory = @"./" }; // Apply settings for project entityFrameworkProject.GlobalSelection(settings => { settings.ForceOverwrite = true; settings.ConcurrencyToken = "Timestamp"; settings.Validate(); settings.EnableDataBindings = true; settings.AuditEntity = new AuditEntity { CreationUserColumnName = "CreationUser", CreationDateTimeColumnName = "CreationDateTime", LastUpdateUserColumnName = "LastUpdateUser", LastUpdateDateTimeColumnName = "LastUpdateDateTime" }; }); entityFrameworkProject.Select("Sales.OrderHeader", settings => settings.EntitiesWithDataContracts = true); // Build features for project, group all entities by schema into a feature entityFrameworkProject.BuildFeatures(); // Scaffolding =^^= entityFrameworkProject .ScaffoldEntityLayer() .ScaffoldDataLayer(); var aspNetCoreProject = entityFrameworkProject .CreateAspNetCoreProject("OnlineStoreWithFluentValidation.WebAPI", @"./", entityFrameworkProject.Database); aspNetCoreProject.GlobalSelection(settings => { settings.ForceOverwrite = true; }); aspNetCoreProject.Select("Sales.OrderDetail", settings => { settings.ConcurrencyToken = "123"; settings.EntitiesWithDataContracts = true; settings.Validate(); }); aspNetCoreProject .ScaffoldAspNetCore(); }
public void TestEntityFrameworkCoreProject() { // Arrange var project = new EntityFrameworkCoreProject { Name = "Store", Database = StoreDatabase.Mock, OutputDirectory = "C:\\Temp\\CatFactory\\EntityFrameworkCore" }; project.BuildFeatures(); project.GlobalSelection(settings => { settings.UseDataAnnotations = true; settings.AddDataBindings = true; }); project.Select("Sales.Order", settings => settings.EntitiesWithDataContracts = true); project.ScaffoldingDefinition += (source, args) => { }; project.ScaffoldedDefinition += (source, args) => { }; // Act foreach (var table in project.Database.Tables) { var selection = project.Selections.FirstOrDefault(item => item.Pattern == table.FullName); if (selection == null) { selection = project.GlobalSelection(); } var codeBuilder = new CSharpClassCodeBuilder { ObjectDefinition = project.GetEntityClassDefinition(table, selection), OutputDirectory = project.OutputDirectory, ForceOverwrite = true }; project.Scaffolding(codeBuilder); codeBuilder.CreateFile(); project.Scaffolded(codeBuilder); } // Assert Assert.True(project.Selections.Count == 2); }
public void ProjectScaffoldingForAdventureWorksDatabaseTest() { // Create instance of factory for SQL Server var databaseFactory = new SqlServerDatabaseFactory(SqlServerDatabaseFactory.GetLogger()) { 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 = databaseFactory.Import(); // Create instance of Entity Framework Core Project var project = new EntityFrameworkCoreProject { Name = "AdventureWorks", Database = database, OutputDirectory = @"C:\Temp\CatFactory.EntityFrameworkCore\AdventureWorks.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 void ProjectScaffoldingForNorthwindDatabaseTest() { // 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 = factory.Import(); // Create instance of Entity Framework Core Project var project = new EntityFrameworkCoreProject { Name = "Northwind.Core", Database = database, OutputDirectory = @"C:\Temp\CatFactory.EntityFrameworkCore\Northwind.Core" }; // Apply settings for Entity Framework Core project project.GlobalSelection(settings => settings.ForceOverwrite = 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(); }
public void ProjectScaffoldingForMockDatabaseTest() { // Create instance of EF Core Project var project = new EntityFrameworkCoreProject { Name = "College.Mock", Database = Databases.College, OutputDirectory = @"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 void ProjectScaffoldingWithDefaultsFromClassicMockDatabaseTest() { // Create instance of EF Core Project var project = new EntityFrameworkCoreProject { Name = "School", Database = Databases.School, OutputDirectory = "C:\\Temp\\CatFactory.EntityFrameworkCore\\School.Mock" }; // Apply settings for EF Core project project.Settings.ForceOverwrite = true; // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public void ProjectScaffoldingForWideWorldImportersDatabaseTest() { // 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 = databaseFactory.Import(); // Create instance of Entity Framework Core project var project = new EntityFrameworkCoreProject { Name = "WideWorldImporters.Core", Database = database, OutputDirectory = @"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 void TestEntityFrameworkCoreProject() { // Arrange var project = new EntityFrameworkCoreProject { Name = "OnlineStore", Database = Databases.OnlineStore, OutputDirectory = @"C:\Temp\CatFactory\EntityFrameworkCore", AuthorInfo = new AuthorInfo { Name = "Hans H.", Email = "*****@*****.**" } }; project.BuildFeatures(); project.GlobalSelection(settings => { settings.UseDataAnnotations = true; settings.AddDataBindings = true; }); project.Selection("Sales.OrderHeader", settings => settings.EntitiesWithDataContracts = true); project.ScaffoldingDefinition += (source, args) => { }; project.ScaffoldedDefinition += (source, args) => { }; // Act project.Scaffold(); // Assert Assert.True(project.Selections.Count == 2); }
public void ProjectScaffoldingWithDataAnnotationsForOnlineStoreDatabaseTest() { // Import database var database = SqlServerDatabaseFactory .Import(SqlServerDatabaseFactory.GetLogger(), "server=(local);database=OnlineStore;integrated security=yes;", "dbo.sysdiagrams"); // Create instance of Entity Framework Core Project var project = new EntityFrameworkCoreProject { Name = "OnlineStoreWithDataAnnotations.Core", Database = database, OutputDirectory = @"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" }; }); 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 ProjectScaffoldingWithDbSetPropertiesAndDataAnnotationsTest() { // Create instance of EF Core Project var project = new EntityFrameworkCoreProject { Name = "Store", Database = Databases.Store, OutputDirectory = "C:\\Temp\\CatFactory.EntityFrameworkCore\\StoreWithDbSetPropertiesAndDataAnnotations.Mock" }; // Apply settings for EF Core project project.Settings.ForceOverwrite = true; project.Settings.UseDataAnnotations = true; project.Settings.DeclareDbSetPropertiesInDbContext = true; // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public void ProjectScaffoldingForAdventureWorksDatabaseTest() { // Create instance of factory for SQL Server var factory = new SqlServerDatabaseFactory(LoggerMocker.GetLogger <SqlServerDatabaseFactory>()) { ConnectionString = "server=(local);database=AdventureWorks2012;integrated security=yes;", ImportSettings = new DatabaseImportSettings { Exclusions = new List <string> { "dbo.sysdiagrams" } } }; // Import database var database = factory.Import(); // Create instance of Entity Framework Core Project var project = new EntityFrameworkCoreProject { Name = "AdventureWorks", Database = database, OutputDirectory = "C:\\Temp\\CatFactory.EntityFrameworkCore\\AdventureWorks" }; // Apply settings for Entity Framework Core project project.Settings.ForceOverwrite = true; // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public void ProjectScaffoldingWithModifiedNamespacesFromMockDatabaseTest() { // Create instance of EF Core Project var project = new EntityFrameworkCoreProject { Name = "Store", Database = Databases.Store, OutputDirectory = "C:\\Temp\\CatFactory.EntityFrameworkCore\\ModifiedStore.Mock" }; // Apply settings for EF Core project project.Settings.ForceOverwrite = true; project.Namespaces.EntityLayer = "EL"; project.Namespaces.DataLayer = "DL"; // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public void TestEntityFrameworkCoreProject() { // Arrange var project = new EntityFrameworkCoreProject { Name = "Store", Database = StoreDatabase.Mock, OutputDirectory = "C:\\Temp\\CatFactory\\EntityFrameworkCore", AuthorInfo = new AuthorInfo { Name = "Hans H.", Email = "*****@*****.**" } }; project.BuildFeatures(); project.GlobalSelection(settings => { settings.UseDataAnnotations = true; settings.AddDataBindings = true; }); project.Select("Sales.Order", settings => settings.EntitiesWithDataContracts = true); project.ScaffoldingDefinition += (source, args) => { }; project.ScaffoldedDefinition += (source, args) => { }; // Act foreach (var table in project.Database.Tables) { var selection = project.Selections.FirstOrDefault(item => item.Pattern == table.FullName) ?? project.GlobalSelection(); var codeBuilder = new CSharpClassCodeBuilder { ObjectDefinition = project.GetEntityClassDefinition(table, selection), OutputDirectory = project.OutputDirectory, ForceOverwrite = true }; codeBuilder.TranslatedDefinition += (source, args) => { if (project.AuthorInfo != null) { codeBuilder.Lines.Insert(0, new CommentLine("// Author name: {0}", project.AuthorInfo.Name)); codeBuilder.Lines.Insert(1, new CommentLine("// Email: {0}", project.AuthorInfo.Email)); codeBuilder.Lines.Insert(2, new CodeLine()); } }; project.Scaffolding(codeBuilder); codeBuilder.CreateFile(); project.Scaffolded(codeBuilder); } // Assert Assert.True(project.Selections.Count == 2); }
public void ProjectScaffoldingForStoreDatabaseTest() { // Create database factory var databaseFactory = new SqlServerDatabaseFactory(SqlServerDatabaseFactory.GetLogger()) { DatabaseImportSettings = new DatabaseImportSettings { ConnectionString = "server=(local);database=OnLineStore;integrated security=yes;", ImportTableFunctions = true, Exclusions = { "dbo.sysdiagrams", "dbo.fn_diagramobjects" } } }; // Import database var database = databaseFactory.Import(); // Create instance of Entity Framework Core project var project = new EntityFrameworkCoreProject { Name = "OnLineStore.Core", Database = database, OutputDirectory = @"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" }; }); project.Selection("Sales.OrderHeader", settings => settings.EntitiesWithDataContracts = true); // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Add event handlers to before and after of scaffold project.ScaffoldingDefinition += (source, args) => { // Add code to perform operations with code builder instance before to create code file }; project.ScaffoldedDefinition += (source, args) => { // Add code to perform operations after of create code file }; // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public void ProjectScaffoldingForOnlineStoreDatabaseTest() { // 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 = databaseFactory.Import(); // Create instance of Entity Framework Core project var project = new EntityFrameworkCoreProject { Name = "OnlineStore.Core", Database = database, OutputDirectory = @"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" }; }); project.Selection("Sales.OrderHeader", settings => settings.EntitiesWithDataContracts = true); // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Add event handlers to before and after of scaffold project.ScaffoldingDefinition += (source, args) => { // Add code to perform operations with code builder instance before to create code file if (args.CodeBuilder.ObjectDefinition is EntityConfigurationClassDefinition cast) { cast.Namespaces.Add("ValueConversion"); cast.Methods.First(item => item.Name == "Configure").Lines.Add( new TodoLine("builder.Property(p => p.DeleteFlag).HasConversion(\"OnlineStore.DataLayer.ValueConversion.BoolToStringConverters.bYN\");") ); } }; project.ScaffoldedDefinition += (source, args) => { // Add code to perform operations after of create code file }; // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldValueConversion() .ScaffoldDataLayer() ; }