Introduction
In this article, we'll start with creating a module using module creator and then we'll add a new column to that module table. Before we start these things, I want to make you know that Oqtane works on EF Core and uses data migrations. I hope you have configured Oqtane on your machine, if not you can follow my previous article Oqtane Blazor CMS And Its Configuration to configure Oqtane in your machine. After a successful configuration, you can follow these steps for table customization.
Follow these steps to modify your table,
Step 1
First, we need to run the main project to create a module
- Login in the Oqtane and open the Admin dashboard by clicking on the gear icon
Figure-Open Admin Dashboard
- Here you need to choose to Add a new module
- In the second dropdown, you need to choose the Developer module
- And in the third dropdown, you need to choose the Module creator
- Then provide a suitable title for the module. In my case, I have chosen the same module creator you can choose another based on your interest.
- After filling in the all detail you can create a module creator on the selected page by clicking on Add Module To Page
Figure-Adding Module Creator
Then we see that a new module is added to our current page.
Figure-Module creator
Here we provide some detail to add a new module.
- Fill owner's Name as Shivam
- Module Name as Employee
- Description - managing employee data
- The template as Default Module Template
- Then click on Create Module
Figure-Adding new Module
After clicking on Create module you'll get a popup like this
Figure- Restart the application
After restarting the application you can check the location and you get a folder with the given parameters.
Figure-Module Created
Our Module is created but it's not activated. To activate open the solution file and build the solution
Figure-Opening the solution
After building the module rebuild the main project and then Start without debugging.
Figure-Activate Module
After clicking on Activate Module button our module will be activated and we can use it. So our module is created and if we check the database we get the following fields
Figure-Default Module schema
Our Actual work starts from here now follow these Steps
Step 2
Now Add a new class in the migrations folder with the name 01000001_AddAddressColumn.
Figure-Migration Class
And add the following code,
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Oqtane.Databases.Interfaces;
using Oqtane.Migrations;
using Shivam.Employee.Migrations.EntityBuilders;
using Shivam.Employee.Repository;
namespace Shivam.Employee.Server.Migrations
{
[DbContext(typeof(EmployeeContext))]
[Migration("Employee.01.00.00.01")]
public class _01000001_AddAddressColumn : MultiDatabaseMigration
{
public _01000001_AddAddressColumn(IDatabase database) : base(database)
{
}
protected override void Up(MigrationBuilder migrationBuilder)
{
var EmployeeEnitityBuilder = new EmployeeEntityBuilder(migrationBuilder, ActiveDatabase);
EmployeeEnitityBuilder.AddStringColumn("Address", 2000, true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
var EmployeeEnitityBuilder = new EmployeeEntityBuilder(migrationBuilder, ActiveDatabase);
EmployeeEnitityBuilder.DropColumn("Address");
}
}
}
In this code, we have implemented the multidatabaseMigration interface and it has two methods Up and Down When we update the version then a new column will be added if change the version downwards then the column will be removed.
Step 3
Next, we need to change the package version. To change the version need to follow these steps
- Right-click on shivam.shared.employee
- click on properties
Figure-Properties
Then click on package>>general and change the package version from 1.0.0 to 1.0.1
Figure-Change version
Then repeat the same steps with the server and client project. After that open .nuspec file under the package project and change version 1.0.1 from 1.0.0
<version>1.0.1</version>
after saving the file now we need to change the current version from the ModuleInfo.cs under client project>>Modules>>modulename
Figure-ModuleInfo file
for this add the following code to the file,
using Oqtane.Models;
using Oqtane.Modules;
namespace Shivam.Employee
{
public class ModuleInfo : IModule
{
public ModuleDefinition ModuleDefinition => new ModuleDefinition
{
Name = "Employee",
Description = "Employee",
Version = "1.0.1",
ServerManagerType = "Shivam.Employee.Manager.EmployeeManager, Shivam.Employee.Server.Oqtane",
ReleaseVersions = "1.0.0,1.0.1",
Dependencies = "Shivam.Employee.Shared.Oqtane",
PackageName = "Shivam.Employee"
};
}
}
now just switch to the release mode and rebuild the project
Figure-Release mode
After a successful build, we can see that a new file is created with the project name.1.0.1.nupkg
Figure-.nupkg file
Then you need to switch back to the debug mode
Note: Oqtane only creates packages in release mode that's why we need to switch release mode by default.
Next just rebuild the main project in another instance of Visual Studio after that if we check the database schema again then a new column is added in the table.
Figure-New Column Added
Now we need to add that property to the model class with the newly added column name, so we can access that column in our project
Figure- Adding New Property
Conclusion
Now we have successfully added a new column in the Oqtane module, we can add multiple columns in the same manner. To add some data values you need to make changes in the Edit.razor file.