2017-10-12 126 views
0

我试图延长RolePermissionSetting类附加属性的一点是,这个类是抽象AbpRoleBase类,它是整个框架中使用申报是有办法做到这一点而不会在数据库中生成不同的AbpPermissions表。覆盖属性

下面是一段代码:

public abstract class AbpRoleBase : FullAuditedEntity<int>, IMayHaveTenant{ 

.. 
public virtual ICollection<RolePermissionSetting> Permissions { get; set; } 
} 
+0

您是否正在重写** AbpRoleBase **或正在扩展** RolePermissionSetting **或正在为** AbpPermissions **做些事情?你以矛盾的方式提及所有3个。 – aaron

+0

我试图扩展RolePermissionSetting,但我没有找到强制所有核心类使用新的方法。直接重写AbpRoleBase可能是一个解决方案,因为我的Role类继承自重写AbpRoleBase的AbpRole (ZeroModule),恐怕如果我用自己的类替换该类,EF将在模型中生成一个新表,然后我将有两个角色表。 –

+0

EF不会生成一个新表,但添加一个'Discriminator'列,这应该没问题。 'AbpRole'实现,而不是覆盖'AbpRoleBase'。您可以安全地覆盖[Role.cs]中的'Permissions'属性(https://github.com/aspnetboilerplate/module-zero-core-template/blob/63f6e3b6147b6df7a08b09a53dad562c57dac17c/aspnet-core/src/AbpCompanyName.AbpProjectName.Core/Authorization /Roles/Role.cs)。 – aaron

回答

0

我从AbpRole(ZeroModule)角色类继承其覆盖AbpRoleBase,我怕,如果我用我自己的替换类,EF将产生模型中的新表,然后我将有两个角色表。

EF将不会生成一个新表,但会添加一个Discriminator列,这应该很好。

AbpRole实现,而不是覆盖,AbpRoleBase。您可以安全地覆盖Role.cs中的Permissions属性。