EFcore的 基础理解<一>

1.新建.netCore Web项目。这时候,还与EF没啥关系。

2.然后添加类 Bolg.和 Post   参考这里  https://docs.microsoft.com/en-us/ef/core/modeling/relational/fk-constraints

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

    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

3.新增控制器Blogs。使用 “”其操作使用EF 的控制器“。

这时候会从Nuget 上安装EF 相关的类库。

还会生成 这个上下文类

public class MyEFTestContext : DbContext
    {
        public MyEFTestContext (DbContextOptions<MyEFTestContext> options)
            : base(options)
        {
        }

        public DbSet<MyEFTest.Models.Blog> Blog { get; set; }
    }

4.执行 add-migration. 会生成migration 文件夹。下面会有迁移文件和 snap.cs 文件。

可以看到。在迁移文件中。

 modelBuilder.Entity("MyEFTest.Models.Post", b =>
                {
                    b.HasOne("MyEFTest.Models.Blog", "Blog")
                        .WithMany("Posts")
                        .HasForeignKey("BlogId")
                        .OnDelete(DeleteBehavior.Cascade);
                });

这里指定了外键关系。

再添加

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

这会扩展Blog 表。扩展的语句也是自动生成的。

  protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.AddColumn<string>(
                name: "Discriminator",
                table: "Blog",
                nullable: false,
                defaultValue: "");

            migrationBuilder.AddColumn<string>(
                name: "RssUrl",
                table: "Blog",
                nullable: true);
        }

执行 update-database. 数据库文件会在 C:UsersQiGongbo  这个下面生成。

打卡VS下的服务器资源管理器,就能看到这个数据库中表的定义。

气功波(18037675651)
原文地址:https://www.cnblogs.com/qgbo/p/11497173.html