Entity Framework |来自一个 table 的多个对象

Entity Framework | Multiple Objects from one table

我在 SQL 服务器中有一个奇怪的遗产 Table,我想知道我是否可以使用以下逻辑:

Table [PartiesTable]
 - Id
 - FirstName
 - LastName
 - Name
 - Type

以及以下 类:

public abstract class Party {
   public Guid Id { get; set; }
}

public class Person : Party {
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

public class Company : Party {
   public string Name { get; set; }
}

这是记录的一个例子

╔════╦═════════════╦══════════╦═══════╦══════╗
║ id ║ FirstName   ║ LastName ║ Name  ║ Type ║
╠════╬═════════════╬══════════╬═══════╬══════╣
║ 1  ║ John        ║ Kenedy   ║ NULL  ║ P    ║
╠════╬═════════════╬══════════╬═══════╬══════╣
║ 2  ║ Meresa      ║ Oslo     ║ NULL  ║ P    ║
╠════╬═════════════╬══════════╬═══════╬══════╣
║ 3  ║ NULL        ║ NULL     ║ ACME  ║ C    ║
╚════╩═════════════╩══════════╩═══════╩══════╝

我试着按照这里的文档 (https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/implementing-inheritance-with-the-entity-framework-in-an-asp-net-mvc-application) 但是他们提到了一个例子,你有 3 个表,而我没有

这实际上是 EF 代码优先中的默认行为。只需简单地定义您的 类,将它们全部映射到名为 table 的 PartiesTable 并设置鉴别器列。配置应如下所示:

modelBuilder.Entity<Party>()
            .Map<Person>(m => { m.Requires("Type").HasValue("P"); m.ToTable("PartiesTable");})
            .Map<Company>(m => { m.Requires("Type").HasValue("C"); m.ToTable("PartiesTable"); })
            .ToTable("PartiesTable");