SaasTenant 上的扩展无法更新 [ABP 框架]

Extension on SaasTenant could not be updated [ABP Framework]

我想使用 ABP Commercial (前端是 Angular) 将新 属性 添加到 SaasTenants 的新列中.到目前为止,我已经添加了一个 EF Core 映射 (参见下面的代码),创建了一个迁移并更新了数据库。

ObjectExtensionManager.Instance.MapEfCoreProperty<Tenant, string>(
    TenantExtraPropetiesName.newProp,
    (entityBuilder, propertyBuilder) =>
    {
        propertyBuilder
            .IsRequired()
            .HasMaxLength(10)
            .HasColumnName(TenantExtraPropetiesName.newProp);
    }
);

必须将此 属性 作为附加字段编辑到 SaaS 租户创建表单中。我正在为此使用此代码。

import { ePropType, FormProp, FormPropList, } from '@abp/ng.theme.shared/extensions';
import { eSaasComponents, SaasCreateFormPropContributors } from '@volo/abp.ng.saas';
import { SaasTenantDto } from '@volo/abp.ng.saas/lib/proxy/host/dtos';

// Additional actions for tenant management.

const newCreateFormProp = new FormProp<SaasTenantDto>({
    name: 'newCreateFormProp',
    type: ePropType.String,
    displayName: '::newCreateFormProp'
});

export function newCreateFromPropContributor(actionList: FormPropList<SaasTenantDto>): void {
    actionList.addTail(newCreateFormProp);
}

export const tenantEntityCreateFormPropContributors: SaasCreateFormPropContributors = {
    [eSaasComponents.Tenants]: [
        newCreateFromPropContributor
    ]
};

并将其链接到 AppRoutingModule 中,如下所示:

// Removed some lines.
{
    path: 'saas',
    loadChildren: () => import('@volo/abp.ng.saas').then(m => m.SaasModule.forLazy({
        createFormPropContributors: tenantEntityCreateFormPropContributors
    }))
},

现在的问题是,当我在 New tenant 模式中单击 Save 时,newProp 将是一个空字符串。我的猜测是 SaasTenantCreateDto 没有正确映射到 SaaSTenant。那我该怎么做呢?

经过一段时间的搜索,我找到了下一个解决方案来解决我的问题。首先,我需要将此方法链接到 ObjectExtensionManager.Instance.MapEfCoreProperty

.AddOrUpdateProperty<string>(
    new Type[]
    {
        typeof(SaasTenantDto),
        typeof(SaasTenantCreateDto)
    },
    TenantExtraPropetiesName.newProp
);

在我的 newCreateFormProp 中,我需要添加值为 true.

的 属性 isExtra
const newCreateFormProp = new FormProp<SaasTenantDto>({
    name: 'newCreateFormProp',
    type: ePropType.String,
    displayName: '::newCreateFormProp'
    isExtra: true
});

这两个操作确实解决了我的问题。