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下的服务器资源管理器,就能看到这个数据库中表的定义。