• 继承
    • 惯例
    • 数据注解
    • 流式 API

    继承

    EF 模型中的继承被用来控制实体类型继承在数据库中的表现方式。

    惯例

    按照惯例,由数据库提供程序决定继承在数据库中的表示。查看 继承(关系数据库) 以了解关系数据库提供程序是如何处理继承的。

    EF 将只会在两个或多个继承类型被显式包含到模型中时建立继承,它不会扫描未包含在模型中的基础或派生类型。可以通过为类层次结构中的每个类型暴露 DbSet 来将类型包含到模型中。

    1. class MyContext : DbContext
    2. {
    3. public DbSet<Blog> Blogs { get; set; }
    4. public DbSet<RssBlog> RssBlogs { get; set; }
    5. }
    6. public class Blog
    7. {
    8. public int BlogId { get; set; }
    9. public string Url { get; set; }
    10. }
    11. public class RssBlog : Blog
    12. {
    13. public string RssUrl { get; set; }
    14. }

    如果你不希望暴露类层次中的某个或某些类型的 DbSet,你可以使用流式 API 来确保他们包含在模型中。

    1. class MyContext : DbContext
    2. {
    3. public DbSet<Blog> Blogs { get; set; }
    4. protected override void OnModelCreating(ModelBuilder modelBuilder)
    5. {
    6. modelBuilder.Entity<RssBlog>();
    7. }
    8. }

    数据注解

    不能使用数据注解来配置继承。

    流式 API

    用于配置继承的流式 API 依赖于你使用的数据库提供程序。查看 继承(关系数据库) 可了解在关系数据库提供程序下你能做的配置。