EF 一对一、一对多、多对多配置语句小记

数据库实体间的关系无非有这么几种:一对一、一对多、多对多,这些关系在EF框架中分别有不同的创建方式:

1、在"Database First"模式中,这些关系通过SQL语句的方式建立

2、在"Model First"模式中,这些关系很简单,通过设计器就能简单搞定,实体简单的关联和数据库表之间的关联,都由EF框架帮我们生成

3、在"Code First"模式中,这些关系则是通过OnModelCreating()来实现,也就是通过代码的方式来实现

本文主要分析"CodeFirst"中上面这些关系的建立.上述的对应关系,"Code First"在实体定义关系上有一下约定:

一、一对一(单向)

在Code First中,一对一关系,是要通过代码来配置(当然不只是一对一关系,所有的约束,关系,都需要通过代码来配置),通过代码配置的方式有两种,一种是在OnModelCreating方法中配置即FluentAPI中配置,另一种是DataAnnotations直接在实体类上面设置即特性标签.

应用场景:给系统中的每个用户维护一条照片信息,因为照片中会存储照片的二进制信息,所以照片表必须独立出来,所以这就产生了一对一的关系,而且是单向一对一,因为每个用户只有一条照片信息.类图如下:

数据库结构如下:

PhotoInfos

Users

ok,开始编写代码

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯NEXT学位

《Node.js在CLI下的工程化体系实践》成都OSC源创会分享总结

1342
来自专栏腾讯移动品质中心TMQ的专栏

和开发一起写代码,让测试左移起来

一、写在前面的话 互联网产品的迭代速度之快,各位都深有体会。做为产品质量的保障者,测试人员经常为测试时间不足而烦恼,如何打破现状来让现在变得更好一些,这是我们一...

2287
来自专栏小尘哥的专栏

小程序(1)-入坑

老板想要一个小程序的东西,作为实诚却又没干过小程序开发的程序猿,二话不说,撸起袖子,开整。

1515
来自专栏Python小屋

Python计算前n个自然数的阶乘和

本文来源于粉丝私信的问题,目的在于计算result = 1!+2!+3!+...+n!,因为代码比较简单,没加注释,有问题可以留言交流。文中给出了2段代码,在实...

4185
来自专栏F-Stack的专栏

F-Stack 助力 HTTP 网络服务器性能提升

HTTP 协议因其易用性和普适性得到了大规模的普及,我们说HTTP协议是互联网的基石一点也不为过,当前提供HTTP服务的Server性能要求越来越高,如...

5496
来自专栏LiveEdu在线科技教育平台

10最好用的Node.js工具、插件和资料库

每一个称职的程序员都应该拥有一套极好的工具来提高自己的工作效率。在Livecoding.tv 上,那里的程序员分享了10个他们认为是最好用的工具、插件和资料库。...

31011
来自专栏Zephery

谈谈个人网站的建立(四)—— 日志系统的建立

谈谈个人网站的建立(四)—— 日志系统的建立 欢迎访问我的网站http://www.wenzhihuai.com/ 。感谢,如果可以,希望能在GitHub上给个...

3514
来自专栏菜鸟致敬

【Lua菜鸟①】初识Lua

简介 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 特性 轻...

3949
来自专栏蓝天

GCC 4.7相对4.6.x的改进点

原文:http://www.iteye.com/news/24628 针对C的功能改进: 支持ISO C11标准中的更多特性。除了之前的-std=c1x...

823
来自专栏架构说

CPU核数和线程 (池)数量的关系(概念理解)

目前手机配置: 支持HUAWEI Mate 8非凡表现的, 是拥有强大性能的华为麒麟950芯片。 此芯片为八核4*Cortex A72 ...

5036

扫码关注云+社区