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
});
这两个操作确实解决了我的问题。
我想使用 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
});
这两个操作确实解决了我的问题。