Launch Sergen and generate code for Tenants table in Default connection:
- Connection: Default
- Table Name: dbo.Tenants
- Module Name: Administration
- Identifier: Tenant
- Permission Key: Administration:Tenants
Next we'll define a lookup script in TenantRow and set DisplayName property to Tenants:
namespace MultiTenancy.Administration
{
//...
[ConnectionKey("Default"), DisplayName("Tenants"),
InstanceName("Tenant"), TwoLevelCached]
[LookupScript("Administration.Tenant")]
public sealed class TenantRow : Row, IIdRow, INameRow
{
[DisplayName("Tenant Id"), Identity]
public Int32? TenantId
{
get => Fields.TenantId[this];
set => Fields.TenantId[this] = value;
}
//...
Let's define a Administration:Tenants permission that only admin user will have (in AdministrationPermissionKeys.cs):
namespace MultiTenancy.Administration
{
[NestedPermissionKeys]
[DisplayName("Administration")]
public class PermissionKeys
{
[Description("User, Role Management and Permissions")]
public const string Security = "Administration:Security";
[Description("Languages and Translations")]
public const string Translation = "Administration:Translation";
[Description("Tenant Management")]
public const string Tenants = "Administration:Tenants";
}
}
And use it on TenantRow:
[ConnectionKey("Default"), DisplayName("Tenants"),
InstanceName("Tenant"), TwoLevelCached]
[ReadPermission(PermissionKeys.Tenants)]
[ModifyPermission(PermissionKeys.Tenants)]
[LookupScript("Administration.Tenant")]
public sealed class TenantRow : Row, IIdRow, INameRow
{