.net EF核心名称Map

jjhzyzn0  于 2022-11-19  发布在  .NET
关注(0)|答案(1)|浏览(154)

我一直在尝试找出如何做到以下几点(尽管我的研究没有帮助):我有这三个阶级:

public abstract class Classifier
{
    public int ClassifierId { get; set; }
    public string ClassifierName { get; set; }
    public DateTime DateAdded { get; set; }
}

public class ManualClassifier : Classifier
{
    public int ManualClassifierId { get; set; }
    public string user_name { get; set; }
    public string userName { get; set; }
    public string firstName { get; set; }
    public string lastName { get; set; }
    public string email { get; set; }
    public string password { get; set; }
}

public class ToolClassifier : Classifier
{
    public int ToolId { get; set; }
    public string ToolName { get; set; }    
}

ManualClassifier和ToolClassifer都继承自Classifier。我使用EF Core将其Map到数据库,但问题如下:我已经搜索了一点,我必须使用一个描述符,它基本上是一个隐式创建的列,在本例中,它将表示分类器的类型。到目前为止一切顺利。当我有一个名为ManualClassifierId的属性和一个ToolId时,问题就出现了。我希望这两个属性Map到ClassifierId属性。因此,在表示实体分类器的表中,ClassifierId属性将是ManualClassifierId或ToolId。如何实现此Map?另外,此解决方案意味着两个子类在表中都有空字段(由于继承了Classifier类的三个属性)。有没有更好的解决方案?也许只需删除Id' s来自两个子类a让它们继承父类a?提前谢谢!

ffscu2ro

ffscu2ro1#

若要在两个类别中使用相同的数据行名称,您可以将Column属性加入到两个属性中。然后它们都会在数据库中使用该数据行名称。请参阅ColumnAttribute(String)。
使用方法如下:

public class ManualClassifier : Classifier
{
    [Column(Name="ClassifierId")]
    public int ManualClassifierId { get; set; }
...........
}

ToolId执行相同的操作。

相关问题