设为首页 加入收藏

TOP

asp.net core系列 27 EF模型配置(索引,备用键,继承)(二)
2019-09-17 18:02:15 】 浏览:39
Tags:asp.net core 系列 模型 配置 索引 备用 继承
gt; Blogs { get; set; } public DbSet<RssBlog> RssBlogs { get; set; } } public class Blog { public int BlogId { get; set; } public string Url { get; set; } } public class RssBlog : Blog { public string RssUrl { get; set; } }

    使用EF基于数据模型(Blog和RssBlog实体)创建数据库。生成后,两个实体合并到一个Blogs表中,如下所示:

    

    

 

  3.2  Fluent API

    如果您不想公开DbSet对于层次结构中的一个或多个实体,您可以使用Fluent API确保它们包含在模型中。如果您不依赖约定,则可以使用明确指定基类型HasBaseType。 

class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
      modelBuilder.Entity<RssBlog>().HasBaseType<Blog>();
    }
}

 

   3.3 discriminator隐藏属性

     上面3.1示例中,创建了discriminator辨别者隐藏属性,是基于base entity的层级。因为它是模型中的一个属性,所以可以像配置其他属性一样配置它。例如,要设置默认情况下的最大长度。

modelBuilder.Entity<Blog>()
         .Property("Discriminator")
            .HasMaxLength(200);

    discriminator鉴别器也可以映射到实体中的实际CLR属性

    class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>()
           .HasDiscriminator<string>("BlogType");
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
    //discriminator
    public string BlogType { get; set; }
}

public class RssBlog : Blog
{
    public string RssUrl { get; set; }
}

 

  参考文献:

    官方文档:EF索引

           EF备用键

         EF继承

         EF继承(关系数据库)

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ASP.NET写的一个博客系统 下一篇unity一个按钮实现开和关

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目