Entity Framework的实体关系

刚开始使用 Entity Framework 的时候,由于没有静下心来认真理清关系,走了一些"痛不欲生"的弯路。而我们目前开发的项目都在使用 Entity Framework,为了避免其他人再经历"痛不欲生"的弯路。于是下定决心边“理清关系”边“写博客”。而写博客可以逼着自己把问题完整地解决,避免半途而废。当写出这些文章,自己不知不觉对问题有了更深的理解。

Entity Framework的实体关系 .Net 数据库 第1张

1. 一对一关系(one-to-one)


a) 单向一对一

类图:

Entity Framework的实体关系 .Net 数据库 第2张

数据库表结构:

Entity Framework的实体关系 .Net 数据库 第3张

Entity Framework中实体关系的定义:

modelBuilder.Entity<BlogSite>()
   .HasRequired(b
=> b.BlogUser)
   .WithMany()
   .HasForeignKey(b
=> b.UserID);

b) 双向一对一

类图:

Entity Framework的实体关系 .Net 数据库 第4张

数据库表结构:

Entity Framework的实体关系 .Net 数据库 第5张

Entity Framework中实体关系的定义:

modelBuilder.Entity<BlogSite>()
   .HasRequired(b
=> b.BlogUser)
   .WithMany()
   .HasForeignKey(b
=> b.UserID);

modelBuilder.Entity
<BlogUser>()
   .HasRequired(u
=> u.BlogSite)
   .WithMany()
   .HasForeignKey(u
=> u.BlogID);


2. 一对多关系(one-to-many)

类图:

Entity Framework的实体关系 .Net 数据库 第6张

数据库表结构:

Entity Framework的实体关系 .Net 数据库 第7张

Entity Framework中实体关系的定义:

modelBuilder.Entity<BlogSite>()
   .HasMany(b
=> b.BlogPosts)
   .WithRequired(p
=> p.BlogSite);


3. 多对多关系(many-to-many)

类图:

Entity Framework的实体关系 .Net 数据库 第8张

数据库表结构:

Entity Framework的实体关系 .Net 数据库 第9张

Entity Framework中实体关系的定义:

modelBuilder.Entity<BlogPost>()
   .HasMany(b => b.Categories)
   .WithMany(c
=> c.BlogPosts)
   .Map
   (
       m
=>
       {
           m.MapLeftKey(
"BlogPostID");
           m.MapRightKey(
"CategoryID");
           m.ToTable(
"BlogPost_Category");
       }
   );


本文标题:Entity Framework的实体关系
本文链接:https://masoft.cn/post/79.html
作者授权:除特别说明外,本文由 智汇软件 原创编译并授权 北京,深圳,重庆,大连,青岛,济南软件设计与定制 刊载发布。
版权声明:本文使用「署名-禁止演绎 4.0 国际」创作共享协议,转载或使用请遵守署名协议。

共有 1 条评论

  1. avatar

    访客

    图片怎么不显示啊?

Top

分享:

支付宝

微信