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");
我在 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");