18
2018
12

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.访客  2019-01-27 10:09:05 回复该评论
图片怎么不显示啊?

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信