public void ProjectScaffoldingFromWideWorldImportersDatabase() { // Import database var databaseFactory = new SqlServerDatabaseFactory(SqlServerDatabaseFactory.GetLogger()) { DatabaseImportSettings = new DatabaseImportSettings { ConnectionString = "server=(local);database=WideWorldImporters;integrated security=yes;", Exclusions = { "dbo.sysdiagrams" } } }; var database = databaseFactory.Import(); // Create instance of Dapper Project var project = DapperProject.Create("WideWorldImporters.Core", database, @"C:\Temp\CatFactory.Dapper\WideWorldImporters.Core"); // Apply settings for project project.GlobalSelection(settings => settings.ForceOverwrite = true); project.Selection("Warehouse.StockItems", settings => settings.AddPagingForGetAllOperation = true); // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public static EntityClassDefinition GetEntityClassDefinition(this DapperProject project, ScalarFunction scalarFunction) { var definition = new EntityClassDefinition { Namespaces = { "System" }, Namespace = project.Database.HasDefaultSchema(scalarFunction) ? project.GetEntityLayerNamespace() : project.GetEntityLayerNamespace(scalarFunction.Schema), AccessModifier = AccessModifier.Public, Name = scalarFunction.GetEntityName(), Constructors = { new ClassConstructorDefinition(AccessModifier.Public) } }; if (!string.IsNullOrEmpty(scalarFunction.Description)) { definition.Documentation.Summary = scalarFunction.Description; } var selection = project.GetSelection(scalarFunction); definition.Implements.Add("IEntity"); if (selection.Settings.SimplifyDataTypes) { definition.SimplifyDataTypes(); } return(definition); }
public static EntityClassDefinition GetEntityClassDefinition(this DapperProject project, StoredProcedure storedProcedure) { var definition = new EntityClassDefinition { Namespaces = { "System" }, Namespace = project.Database.HasDefaultSchema(storedProcedure) ? project.GetEntityLayerNamespace() : project.GetEntityLayerNamespace(storedProcedure.Schema), AccessModifier = AccessModifier.Public, Name = storedProcedure.GetResultName(), Constructors = { new ClassConstructorDefinition(AccessModifier.Public) } }; foreach (var resultSet in storedProcedure.FirstResultSetsForObject) { var type = project.Database.ResolveDatabaseType(resultSet.SystemTypeName); definition.Properties.Add(new PropertyDefinition(AccessModifier.Public, type, resultSet.Name) { IsAutomatic = true }); } return(definition); }
public static RepositoryInterfaceDefinition GetRepositoryInterfaceDefinition(this DapperProject project) => new RepositoryInterfaceDefinition { Namespace = project.GetDataLayerContractsNamespace(), AccessModifier = AccessModifier.Public, Name = "IRepository" };
public static CSharpClassDefinition GetRepositoryBaseClassDefinition(this DapperProject project) { var classDefinition = new CSharpClassDefinition(); classDefinition.Namespaces.Add("System"); classDefinition.Namespaces.Add("System.Linq"); classDefinition.Namespaces.Add("System.Threading.Tasks"); classDefinition.Namespaces.Add("Microsoft.Extensions.Options"); classDefinition.Namespaces.Add(project.GetEntityLayerNamespace()); classDefinition.Namespace = project.GetDataLayerContractsNamespace(); classDefinition.Name = "Repository"; classDefinition.Constructors.Add(new ClassConstructorDefinition(new ParameterDefinition("IOptions<AppSettings>", "appSettings")) { Lines = new List <ILine> { new CodeLine("ConnectionString = appSettings.Value.ConnectionString;") } }); classDefinition.Properties.Add(new PropertyDefinition("String", "ConnectionString ") { AccessModifier = AccessModifier.Protected, IsReadOnly = true }); return(classDefinition); }
public async Task ProjectSelectionScopeAsync() { // Arrange // Get database var database = await SqlServerDatabaseFactory .ImportAsync("server=(local);database=OnlineStore;integrated security=yes;", "dbo.sysdiagrams"); // Create instance of Entity Framework Core project var project = DapperProject .Create("OnlineStore", database, @"C:\Temp\CatFactory.Dapper\OnlineStore.Core"); // Act // Apply settings for Entity Framework Core project project.GlobalSelection(settings => settings.ForceOverwrite = true); project.Selection("Sales.OrderHeader", settings => settings.UseStringBuilderForQueries = false); var orderHeader = database.FindTable("Sales.OrderHeader"); var selectionForOrder = project.GetSelection(orderHeader); // Assert Assert.True(project.Selections.Count == 2); Assert.True(project.GlobalSelection().Settings.UseStringBuilderForQueries == true); Assert.True(selectionForOrder.Settings.UseStringBuilderForQueries == false); }
public static EntityInterfaceDefinition GetEntityInterfaceDefinition(this DapperProject project) => new EntityInterfaceDefinition { Namespace = project.GetEntityLayerNamespace(), AccessModifier = AccessModifier.Public, Name = "IEntity" };
public void SqlDomScaffoldingFromWideWorldImportersDatabase() { // Import database var factory = new SqlServerDatabaseFactory { DatabaseImportSettings = new DatabaseImportSettings { ConnectionString = "server=(local);database=WideWorldImporters;integrated security=yes;", ImportTables = false, ImportViews = true, ImportCommandText = "select 'sys' as 'schema_name', 'columns' as 'object_name', 'VIEW' as 'object_type'" } }; var database = factory.Import(); // Create instance of Dapper Project var project = DapperProject.Create("SqlDom.Core", database, @"C:\Temp\CatFactory.Dapper\SqlDom.Core"); // Apply settings for 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 ProjectScaffoldingFromNorthwindDatabaseTest() { // Import database var database = SqlServerDatabaseFactory .Import(LoggerMocker.GetLogger <SqlServerDatabaseFactory>(), "server=(local);database=Northwind;integrated security=yes;", "dbo.sysdiagrams"); // Create instance of Dapper Project var project = new DapperProject { Name = "Northwind", Database = database, OutputDirectory = @"C:\Temp\CatFactory.Dapper\Northwind.Dapper.API\src\Northwind.Dapper.API" }; // Apply settings for 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 static RepositoryBaseClassDefinition GetRepositoryBaseClassDefinition(this DapperProject project) => new RepositoryBaseClassDefinition { Namespaces = { "System.Data", project.GetEntityLayerNamespace() }, Namespace = project.GetDataLayerContractsNamespace(), AccessModifier = AccessModifier.Public, Name = "Repository", Constructors = { new ClassConstructorDefinition(AccessModifier.Public, new ParameterDefinition("IDbConnection", "connection")) { Lines = { new CodeLine("Connection = connection;") } } }, Properties = { new PropertyDefinition(AccessModifier.Protected, "IDbConnection", "Connection") { IsReadOnly = true } } };
public void TestProjectSelectionScope() { // Arrange // 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 DapperProject { Name = "OnLineStore", Database = database, OutputDirectory = "C:\\Temp\\CatFactory.Dapper\\OnLineStore.Core" }; // Act // Apply settings for Entity Framework Core project project.GlobalSelection(settings => { settings.ForceOverwrite = true; }); project.Selection("Sales.OrderHeader", settings => settings.UseStringBuilderForQueries = false); var orderHeader = database.FindTable("Sales.OrderHeader"); var selectionForOrder = project.GetSelection(orderHeader); // Assert Assert.True(project.Selections.Count == 2); Assert.True(project.GlobalSelection().Settings.UseStringBuilderForQueries == true); Assert.True(selectionForOrder.Settings.UseStringBuilderForQueries == false); }
public void TestDapperProject() { // Arrange var project = new DapperProject { Name = "Store", Database = Databases.OnLineStore, OutputDirectory = "C:\\Temp\\CatFactory\\Dapper", AuthorInfo = new AuthorInfo { Name = "Hans H.", Email = "*****@*****.**" } }; project.ScaffoldingDefinition += (source, args) => { }; project.ScaffoldedDefinition += (source, args) => { }; project.GlobalSelection(settings => settings.UseStringBuilderForQueries = false); project.Selection("Sales.Order", settings => settings.UseQueryBuilder = true); // 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 static RepositoryInterfaceDefinition GetRepositoryInterfaceDefinition(this DapperProject project) { return(new RepositoryInterfaceDefinition { Namespace = project.GetDataLayerContractsNamespace(), Name = "IRepository" }); }
public void TestDapperProject() { // Arrange var project = new DapperProject { Name = "Store", Database = StoreDatabase.Mock, OutputDirectory = "C:\\Temp\\CatFactory\\Dapper" }; project.ScaffoldingDefinition += (source, args) => { }; project.ScaffoldedDefinition += (source, args) => { }; project.GlobalSelection(settings => { settings.UseStringBuilderForQueries = false; }); project.Select("Sales.Order", settings => settings.UseQueryBuilder = true); // 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 static EntityClassDefinition GetEntityClassDefinition(this DapperProject project, IView view) { var definition = new EntityClassDefinition { Namespaces = { "System" }, Namespace = project.Database.HasDefaultSchema(view) ? project.GetEntityLayerNamespace() : project.GetEntityLayerNamespace(view.Schema), AccessModifier = AccessModifier.Public, Name = project.GetEntityName(view) }; definition.Constructors.Add(new ClassConstructorDefinition(AccessModifier.Public)); if (!string.IsNullOrEmpty(view.Description)) { definition.Documentation.Summary = view.Description; } var selection = project.GetSelection(view); foreach (var column in view.Columns) { var propertyType = project.Database.ResolveDatabaseType(column); var propertyName = project.GetPropertyName(view, column); if (selection.Settings.UseAutomaticPropertiesForEntities) { definition.Properties.Add(new PropertyDefinition { AccessModifier = AccessModifier.Public, Type = project.Database.ResolveDatabaseType(column), Name = project.GetPropertyName(view, column), IsAutomatic = true }); } else { definition.AddPropertyWithField(propertyType, propertyName); } } definition.Implements.Add("IEntity"); if (selection.Settings.SimplifyDataTypes) { definition.SimplifyDataTypes(); } return(definition); }
public void ProjectScaffoldingFromOnlineStoreDatabase() { // 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 Dapper Project var project = DapperProject.Create("OnlineStore.Core", database, @"C:\Temp\CatFactory.Dapper\OnlineStore.Core"); /* Apply settings for project */ project.GlobalSelection(settings => { settings.ForceOverwrite = true; settings.UpdateExclusions = new List <string> { "CreationUser", "CreationDateTime", "Timestamp" }; settings.InsertExclusions = new List <string> { "LastUpdateUser", "LastUpdateDateTime", "Timestamp" }; }); project.Selection("Warehouse.*", settings => settings.UseStringBuilderForQueries = false); project.Selection("Sales.*", settings => settings.AddPagingForGetAllOperation = true); project.Selection("Sales.OrderDetail", settings => settings.RemoveAction <ReadAllAction>()); // 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 Dapper Project var project = new DapperProject { Name = "Store", Database = database, OutputDirectory = @"C:\Temp\CatFactory.Dapper\Store.Dapper.API\src\Store.Dapper.API" }; // Apply settings for project project.GlobalSelection(settings => { settings.ForceOverwrite = true; settings.UpdateExclusions.AddRange(new string[] { "CreationUser", "CreationDateTime", "Timestamp" }); settings.InsertExclusions.AddRange(new string[] { "LastUpdateUser", "LastUpdateDateTime", "Timestamp" }); }); project.Select("Production.*", settings => { settings.UseStringBuilderForQueries = false; settings.AddPagingForGetAllOperations = true; }); project.Select("Sales.Order", settings => settings.AddPagingForGetAllOperations = 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 static AppSettingsClassDefinition GetAppSettingsClassDefinition(this DapperProject project) => new AppSettingsClassDefinition { Namespace = project.GetDataLayerNamespace(), AccessModifier = AccessModifier.Public, Name = "AppSettings", Properties = { new PropertyDefinition(AccessModifier.Public, "string", "ConnectionString") { IsReadOnly = true } } };
public void ProjectScaffoldingFromNorthwindDatabaseTest() { // Import database var databaseFactory = new SqlServerDatabaseFactory(SqlServerDatabaseFactory.GetLogger()) { DatabaseImportSettings = new DatabaseImportSettings { ConnectionString = "server=(local);database=Northwind;integrated security=yes;", ImportScalarFunctions = true, ImportTableFunctions = true, ImportStoredProcedures = true, Exclusions = { "dbo.sp_alterdiagram", "dbo.sp_creatediagram", "dbo.sp_dropdiagram", "dbo.sp_helpdiagramdefinition", "dbo.sp_helpdiagrams", "dbo.sp_renamediagram", "dbo.sp_upgraddiagrams", "dbo.sysdiagrams", "dbo.fn_diagramobjects" } } }; var database = databaseFactory.Import(); // Create instance of Dapper Project var project = new DapperProject { Name = "Northwind.Core", Database = database, OutputDirectory = @"C:\Temp\CatFactory.Dapper\Northwind.Core" }; // Apply settings for project project.GlobalSelection(settings => settings.ForceOverwrite = true); project.Selection("dbo.Ten Most Expensive Products", settings => settings.UseStringBuilderForQueries = false); // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public static CSharpClassDefinition GetAppSettingsClassDefinition(this DapperProject project) { return(new CSharpClassDefinition { Namespace = project.GetDataLayerNamespace(), Namespaces = new List <string> { "System" }, Name = "AppSettings", Properties = new List <PropertyDefinition> { new PropertyDefinition("String", "ConnectionString") } }); }
public static EntityClassDefinition GetEntityClassDefinition(this DapperProject project, ITableFunction tableFunction) { var definition = new EntityClassDefinition { Namespaces = { "System" }, Namespace = project.Database.HasDefaultSchema(tableFunction) ? project.GetEntityLayerNamespace() : project.GetEntityLayerNamespace(tableFunction.Schema), AccessModifier = AccessModifier.Public, Name = project.GetResultName(tableFunction), Constructors = { new ClassConstructorDefinition(AccessModifier.Public) } }; if (!string.IsNullOrEmpty(tableFunction.Description)) { definition.Documentation.Summary = tableFunction.Description; } var selection = project.GetSelection(tableFunction); foreach (var column in tableFunction.Columns) { definition.Properties.Add(new PropertyDefinition { AccessModifier = AccessModifier.Public, Type = project.Database.ResolveDatabaseType(column), Name = project.GetPropertyName(column.Name), IsAutomatic = true }); } definition.Implements.Add("IEntity"); if (selection.Settings.SimplifyDataTypes) { definition.SimplifyDataTypes(); } return(definition); }
public void ProjectScaffoldingFromAdventureWorksDatabaseTest() { // Import database var databaseFactory = new SqlServerDatabaseFactory(SqlServerDatabaseFactory.GetLogger()) { DatabaseImportSettings = new DatabaseImportSettings { ConnectionString = "server=(local);database=AdventureWorks2017;integrated security=yes;", ImportTableFunctions = true, ImportScalarFunctions = true, Exclusions = { "dbo.sysdiagrams" }, ExclusionTypes = { "geography" } } }; var database = databaseFactory.Import(); // Create instance of Dapper Project var project = new DapperProject { Name = "AdventureWorks.Core", Database = database, OutputDirectory = @"C:\Temp\CatFactory.Dapper\AdventureWorks.Core" }; // Apply settings for project project.GlobalSelection(settings => settings.ForceOverwrite = true); project.Selection("Sales.SalesOrderHeader", settings => settings.AddPagingForGetAllOperation = true); // Build features for project, group all entities by schema into a feature project.BuildFeatures(); // Scaffolding =^^= project .ScaffoldEntityLayer() .ScaffoldDataLayer(); }
public void ProjectScaffoldingFromAdventureWorksDatabaseTest() { // Import database var factory = new SqlServerDatabaseFactory(LoggerMocker.GetLogger <SqlServerDatabaseFactory>()) { ConnectionString = "server=(local);database=AdventureWorks2012;integrated security=yes;", ImportSettings = new DatabaseImportSettings { Exclusions = new List <string> { "dbo.sysdiagrams" }, ExclusionTypes = new List <string> { "geography" }, ImportTableFunctions = true } }; var database = factory.Import(); // Create instance of Dapper Project var project = new DapperProject { Name = "AdventureWorks", Database = database, OutputDirectory = @"C:\Temp\CatFactory.Dapper\AdventureWorks.Dapper.API\src\AdventureWorks.Dapper.API" }; // Apply settings for 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 static EntityClassDefinition CreateView(this DapperProject project, IView view) { var definition = new EntityClassDefinition(); definition.Namespaces.Add("System"); definition.Namespace = view.HasDefaultSchema() ? project.GetEntityLayerNamespace() : project.GetEntityLayerNamespace(view.Schema); definition.Name = view.GetEntityName(); definition.Constructors.Add(new ClassConstructorDefinition()); if (!string.IsNullOrEmpty(view.Description)) { definition.Documentation.Summary = view.Description; } var selection = project.GetSelection(view); foreach (var column in view.Columns) { if (selection.Settings.UseAutomaticPropertiesForEntities) { definition.Properties.Add(new PropertyDefinition(project.Database.ResolveType(column), view.GetPropertyNameHack(column))); } else { definition.AddPropertyWithField(project.Database.ResolveType(column), view.GetPropertyNameHack(column)); } } definition.Implements.Add("IEntity"); if (selection.Settings.SimplifyDataTypes) { definition.SimplifyDataTypes(); } return(definition); }
public void ProjectScaffoldingFromLegacyErpDatabase() { // 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 = Databases.LegacyErpDatabase; database.NamingConvention = new SqlServerDatabaseNamingConvention(); // Create instance of Dapper Project var project = DapperProject.Create("OnlineStore.Core", database, @"C:\Temp\CatFactory.Dapper\LegacyErp.Core"); // Apply settings for 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 static EntityClassDefinition GetEntityClassDefinition(this DapperProject project, ITable table) { var definition = new EntityClassDefinition { Namespaces = { "System" }, Namespace = project.Database.HasDefaultSchema(table) ? project.GetEntityLayerNamespace() : project.GetEntityLayerNamespace(table.Schema), AccessModifier = AccessModifier.Public, Name = project.GetEntityName(table), Constructors = { new ClassConstructorDefinition { AccessModifier = AccessModifier.Public } } }; var selection = project.GetSelection(table); if (selection.Settings.EnableDataBindings) { definition.Namespaces.Add("System.ComponentModel"); definition.Implements.Add("INotifyPropertyChanged"); definition.Events.Add(new EventDefinition(AccessModifier.Public, "PropertyChangedEventHandler", "PropertyChanged")); } if (table.PrimaryKey != null && table.PrimaryKey.Key.Count == 1) { var column = (Column)table.GetColumnsFromConstraint(table.PrimaryKey).First(); definition.Constructors.Add(new ClassConstructorDefinition { AccessModifier = AccessModifier.Public, Parameters = { new ParameterDefinition(project.Database.ResolveDatabaseType(column), project.GetParameterName(column)) }, Lines = { new CodeLine("{0} = {1};", project.GetPropertyName(table, column), project.GetParameterName(column)) } }); } if (!string.IsNullOrEmpty(table.Description)) { definition.Documentation.Summary = table.Description; } foreach (var column in table.Columns) { var propertyType = project.Database.ResolveDatabaseType(column); var propertyName = project.GetPropertyName(table, column); if (selection.Settings.EnableDataBindings) { definition.AddViewModelProperty(propertyType, propertyName); } else { if (selection.Settings.UseAutomaticPropertiesForEntities) { definition.Properties.Add(new PropertyDefinition { AccessModifier = AccessModifier.Public, Type = propertyType, Name = propertyName, IsAutomatic = true }); } else { definition.AddPropertyWithField(propertyType, propertyName); } } } definition.Implements.Add("IEntity"); if (selection.Settings.SimplifyDataTypes) { definition.SimplifyDataTypes(); } return(definition); }
public static EntityClassDefinition CreateEntity(this DapperProject project, ITable table) { var classDefinition = new EntityClassDefinition(); classDefinition.Namespaces.Add("System"); var selection = project.GetSelection(table); if (selection.Settings.EnableDataBindings) { classDefinition.Namespaces.Add("System.ComponentModel"); classDefinition.Implements.Add("INotifyPropertyChanged"); classDefinition.Events.Add(new EventDefinition("PropertyChangedEventHandler", "PropertyChanged")); } classDefinition.Namespace = table.HasDefaultSchema() ? project.GetEntityLayerNamespace() : project.GetEntityLayerNamespace(table.Schema); classDefinition.Name = table.GetEntityName(); classDefinition.Constructors.Add(new ClassConstructorDefinition()); if (table.PrimaryKey != null && table.PrimaryKey.Key.Count == 1) { var column = table.GetColumnsFromConstraint(table.PrimaryKey).First(); classDefinition.Constructors.Add(new ClassConstructorDefinition(new ParameterDefinition(project.Database.ResolveType(column), column.GetParameterName())) { Lines = new List <ILine> { new CodeLine("{0} = {1};", column.GetPropertyName(), column.GetParameterName()) } }); } if (!string.IsNullOrEmpty(table.Description)) { classDefinition.Documentation.Summary = table.Description; } foreach (var column in table.Columns) { if (selection.Settings.EnableDataBindings) { classDefinition.AddViewModelProperty(project.Database.ResolveType(column), table.GetPropertyNameHack(column)); } else { if (selection.Settings.UseAutomaticPropertiesForEntities) { classDefinition.Properties.Add(new PropertyDefinition(project.Database.ResolveType(column), table.GetPropertyNameHack(column))); } else { classDefinition.AddPropertyWithField(project.Database.ResolveType(column), table.GetPropertyNameHack(column)); } } } classDefinition.Implements.Add("IEntity"); if (selection.Settings.SimplifyDataTypes) { classDefinition.SimplifyDataTypes(); } return(classDefinition); }
public void ProjectScaffoldingFromOnLineStoreDatabaseTest() { // 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 Dapper Project var project = new DapperProject { Name = "OnlineStore.Core", Database = database, OutputDirectory = @"C:\Temp\CatFactory.Dapper\OnlineStore.Core" }; // Apply settings for project project.GlobalSelection(settings => { settings.ForceOverwrite = true; settings.UpdateExclusions = new List <string> { "CreationUser", "CreationDateTime", "Timestamp" }; settings.InsertExclusions = new List <string> { "LastUpdateUser", "LastUpdateDateTime", "Timestamp" }; }); project.Selection("Sales.*", settings => { //settings.UseStringBuilderForQueries = false; settings.AddPagingForGetAllOperation = true; }); //project.Selection("Sales.OrderHeader", settings => settings.AddPagingForGetAllOperation = 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(); }