说明
此例筛选了感兴趣及常用部分
参考文献
https://docs.microsoft.com/en-us/ef/core/modeling/relationships
One to Many
Many to Many
新增一个中间类,再转换成One to Many及One to Many的形式
class MyContext : DbContext{ public DbSetPosts { get; set; } public DbSet Tags { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity () .HasKey(t => new { t.PostId, t.TagId }); modelBuilder.Entity () .HasOne(pt => pt.Post) .WithMany(p => p.PostTags) .HasForeignKey(pt => pt.PostId); modelBuilder.Entity () .HasOne(pt => pt.Tag) .WithMany(t => t.PostTags) .HasForeignKey(pt => pt.TagId); }}public class Post{ public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; } public List PostTags { get; set; }}public class Tag{ public string TagId { get; set; } public List PostTags { get; set; }}public class PostTag{ public int PostId { get; set; } public Post Post { get; set; } public string TagId { get; set; } public Tag Tag { get; set; }}
One to One(One to Zero)
class MyContext : DbContext{ public DbSetBlogs { get; set; } public DbSet BlogImages { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity () .HasOne(p => p.BlogImage) .WithOne(i => i.Blog) .HasForeignKey (b => b.BlogForeignKey); }}public class Blog{ public int BlogId { get; set; } public string Url { get; set; } public BlogImage BlogImage { get; set; }}public class BlogImage{ public int BlogImageId { get; set; } public byte[] Image { get; set; } public string Caption { get; set; } public int BlogForeignKey { get; set; } public Blog Blog { get; set; }}
使用Migraion
将Model模型放在单独的类库中
使用CLI commands
需要在此类库中安装Migration必须的Nuget包,编辑.csproj
MSSql Server
dotnet ef migrations add Initial -c SchoolContext -o Data/SqlServerMigrations -s ../RelationshipStudydotnet ef database update -s ../RelationshipStudydotnet ef migrations remove -c SchoolContext -s ../RelationshipStudy