EF Core名称映射



我一直在试图弄清楚如何做以下事情(尽管我的研究没有帮助):我有这三个类:

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和toolclassifier都继承自Classifier。我使用EF Core将其映射到数据库,但问题如下:我已经搜索了一点,我必须使用一个标识符,它基本上是一个隐式创建的列,它会说的类型,在这种情况下,分类器。到目前为止一切顺利。当我有一个名为ManualClassifierId的属性和一个ToolId时,问题就出现了。我希望这两个属性映射到ClassifierId属性。因此,在表示实体Classifier的表中,ClassifierId属性要么是ManualClassifierId,要么是ToolId。如何实现这种映射?此外,该解决方案还意味着两个子类在表中都有空字段(由于从Classifier类继承了三个属性)。有没有更好的解决方案?也许只是从两个子类中删除Id,让它们继承父类?提前感谢!

要在两个类中使用相同的列名,可以向两个属性添加一个Column属性。然后,它们都将在数据库中使用该列名。看到ColumnAttribute(字符串)。

像这样使用:

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

ToolId做同样的处理。

最新更新