TPT继承下抽象类Classifier关联ClassifierVulnWeight的实例创建问题咨询
你的假设是正确的,抽象类Classifier定义的ICollection<ClassifierVulnWeight>属性会被子类ToolClassifier和ManualClassifier正常继承,不会出现问题,创建ClassifierVulnWeight实例也不会有障碍,具体原因如下:
TPT继承的映射逻辑
在TPT(Table-Per-Type)模式中,抽象基类Classifier对应的数据库表会存放所有子类共享的字段,子类各自的表仅存储独有字段。ORM框架会自动处理继承关系的主键关联,子类实例的Id本质上就是Classifier的主键,完全符合ClassifierVulnWeight复合主键中ClassifierId的要求。创建
ClassifierVulnWeight实例的操作逻辑
由于Classifier是抽象类,你实际只会操作ToolClassifier或ManualClassifier的实例。当你创建ClassifierVulnWeight并关联到某个子类实例时,框架会自动将子类的Id填入ClassifierId字段,再结合VulnerabilityClass的Id组成复合主键,全程不需要实例化抽象类Classifier,自然不会有问题。关联关系的继承特性
你在Classifier中定义的一对多关联关系(与ClassifierVulnWeight)会被所有子类自动继承,不需要在子类中重复配置。无论是从子类实例访问ICollection<ClassifierVulnWeight>,还是从ClassifierVulnWeight反向关联到子类实例,框架都能正确识别并处理。
内容的提问来源于stack exchange,提问作者Miguel Ferreira

