我是一位有帮助的助手,以下是您需要翻译的内容:
我有一个遗留的数据库模式,我想用以表格为基础的类型(Entity Framework)映射来建模。 但是基础表和子类表使用不同的名称作为主键,EF好像不喜欢这样。
例如:
[Table("People")]
abstract class Person {
[Key, Column("Id")]
public int Id { get; set; }
// Person properties...
}
[Table("Employees")]
class Employee : Person {
[Key, Column("PersonId")]
public new int Id { get; set; }
// Employee-specific properties...
}
实际上这是可以起作用的,至少对于阅读而言: Employee
被映射到来自 People
表和 Employees
表的一条记录。然而,Entity Framework 不会填充 Employee.Id
(它总是为零),因此我注释了 Employee.Id
为 [Obsolete]
,以确保我的其余代码不会尝试使用它。
我担心以这种方式使用 new
看起来像一个可怕的黑客。
有没有更符合惯用法/正确的方法?