【发布时间】:2020-04-23 11:30:17
【问题描述】:
我在我的数据库中创建了 3 个表,每个表都有一个主键。
Person, Man, Woman
这个想法是 Man 和 Woman 从 Person 继承,所以他们的主键也是 Person PK 的 FK。
我使用 Scaffold-DbContext 命令生成模型,显然我的模型中没有任何继承,因此我明确地这样做了...:
Man : Person {...}
Woman : Person {...}
但是仍然缺少一些东西,因为我收到了运行时错误: “无法在 'Man' 上配置密钥,因为它是派生类型。必须在根类型 'Person' 上配置密钥。”
如果我这样做,那么我会得到一个错误,相反我应该在基类中而不是在派生类中设置 Key。
有没有使用 DB First 方法的解决方案?
我不介意数据库内部的外观(1 个表也可以使用鉴别器),我只想在我的模型中继承。
谢谢
【问题讨论】:
-
创建代码优先模型以查看模式,您将看到表格需要的外观。
-
This guide 关于 EF Core 中的继承显示只有父类具有键列。示例中有一个使用鉴别器的数据库表。
-
您的意思是,如果我正确定义了数据库(使用鉴别器字段的 1 个表),那么当我运行命令 Scaffold-DbContext 时,我将获得具有继承的模型以及正确设置的 DBContext?
标签: sql database asp.net-core ef-core-3.1