Code First 关系配置整理
之前EF一直有性能问题以及使用便利性问题, 终于到了EF6有了Migrations之后, 小弟也决定加入EF阵营了.
在学习FluentAPI配置关系的时候, 发现网上的好几个教程实际上博主自己都没有搞明白, 或者说博主自己的理解有偏差, 还好小哥一般不轻易相信别人......
终于在最后看到一篇对关系解释比较客观, 引导性重于强定义的文章. 考虑到广大网友可能会被之前那些文章带偏. 我这里整理了一下我自己的理解, 同时也将这篇好文章转出来.
所有的配置代码均写到 产品FluentAPI 中
| 目标对象 | 关系对象 | 关系 | 方向 | 目标代码 | 关系代码 |
| 产品 | 保修卡 | 1共1 | ←→ | Entity | Entity |
| 说明书 | 1-?1 | → | ID? Entity |
||
| 合格证 | 1-1 | → | ID Entity |
||
| 图片 | 1-?N | ←→ | List<Entity> | ID Entity |
|
| 标签 | ?N-?N | ←→ | List<Entity> | List<Entity> | |
| ?N-?N | → | List<Entity> |
| 关系 | 说明 |
| 1共1 | 相同编号, 共享编号 |
| 1-?1 | 不同编号, 单向, 可选 内容极少的说明书, 直接印刷到产品身上, 没有单独纸质说明书 |
| 1-1 | 不同编号, 单向, 必要 |
| 1-?N | 必要 |
| ?N-?N | 必要(可选) |
| ?N-?N | 单向 |
| 关系 | code |
| 1共1 | HasRequired.WithRequiredPrincipal |
| 1-?1 | HasOptional.WithMany.HasForeignkey |
| 1-1 | HasRequired.WithMany.HasForeignkey |
| 1-?N | HasMany.WithRequired.HasForeignkey |
| ?N-?N | HasMany.WithMany.Map(ToTable(Name)|LeftKey|RightKey) |
| ?N-?N | HasMany.WithMany(无参).Map(ToTable(Name)) |
PS:
Include(预加载): 因为EF默认启用"延迟加载", 所以有时根据业务要用到"预加载"
TPH TPT TPC: 这个可能不好记, 我是这样记的, TP(回城卷) + HTC(手机), H(整合保存), T(拆分保存), C(然并卵)
ComPlexType(复杂对象): 将类化整为零
最后, 给出参考文章链接:http://www.cnblogs.com/lsxqw2004/archive/2015/08/07/4701979.html
Code First 关系配置整理的更多相关文章
- 第二节:创建模型,使用Code First,配置映射关系
这一节,实现模型的创建,配置映射关系 使用Code First数据迁移. 创建模型 一,首先创建几个接口:实体接口,聚合根接口,值对象接口 1,实体接口: 2,聚合根接口: 3,值对象接口: 二,模型 ...
- Entity Framework Code First关系映射约定
本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...
- EF CodeFirst 关系配置
自从开始学习asp.net mvc采用code first以来,关系配置就没有搞清楚过!(⊙﹏⊙)b 笔记之前先感谢以下文章和博主,对他们表示崇拜,由浅入深.举例恰当.拨云见日.茅塞顿开,还有什么词, ...
- Fluent Nhibernate code frist简单配置
Fluent Nhibernate code frist简单配置 前言 在以前的项目开发过程中使用nhibernate做完orm映射工具需要编写大量的xml映射文件,项目过程中往往会因为一个字段等 ...
- Entity Framework Code First关系映射约定【l转发】
本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...
- Spring框架学习之高级依赖关系配置(一)
上篇文章我们对Spring做了初步的学习,了解了基本的依赖注入思想.学会简单的配置bean.能够使用Spring容器管理我们的bean实例等.但这还只是相对较浅显的内容,本篇将介绍bean的相关更高级 ...
- EntityFramework Core2.0 多对多关系配置
在EF6.0 中,多对多关系配置时,系统会自动生成第三张表,来将两张有互相约束关系的表联系起来,但是在EF Core2.0中,我们需要手动建立第三张表,比如说有两个模型Passage.cs和Cat ...
- Code Blocks中配置OpenGL方法
关于在Code Blocks中配置OpenGL的方法,在网上一直没有找到实用的方法,后来在马龙师兄的帮助下终于配置成功了,现把配置过程记录如下. (1)下载codeblocks,最好是带mingw的版 ...
- hibernate多对多关系配置
一.创建用户,角色实体类. 一名用户可以有多个角色.一个角色可以对于多名用户. 用户实体类 public class User { private int uId; private String uN ...
随机推荐
- java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决办法
这个问题的原因是没有导入mysql连接库,我从官网上下载后照着网上的教程各种导入无果,最后发现是我导入的文件错了.... 官网上下下来的压缩文件是这个,不过这并不是直接要导入的文件,首先解压文件,然后 ...
- int与CString互相转化
int num; CString str; //int转CString num=; str.Format(_T("%d"),num); //CString转int str=L&qu ...
- HTTP事务
一次完整的HTTP事务 当我们在地址栏输入URL,按下回车的时候,浏览器需要做的事情: 1.域名解析:浏览器解析域名对应的IP地址: //DNS Domain Name System 域名系统 将域 ...
- PHP中常见的提示对照表
.Notice: Undefined variable: 变量名 in 注:使用了一个没有被定义的变量 .Parse error: syntax error, unexpected T_ELSE in ...
- HTML 接收本地文件
HTML代码请把文件拖到下面的框里触发drop事件读取拖放的文件常用情况:结合XMLHttpRequest和拖放文件实现上传查看和管理本地文件和图片 <!DOCTYPE HTML> < ...
- linux du和df
df.du和fdisk这三个常用命令:df用于检查文件系统磁盘占用情况,du检查磁盘空间占用情况,而fdisk用于磁盘分区. du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,d ...
- 父类div高度适应子类div
父类div高度适应子类div 通常有许多div的高度由子类的高度决定父类的高度,所以需要父类div要适应子类div的高度,一般情况父类的高度可以直接设置成“auto”即可. 在有的情况下,子类div会 ...
- Debian/Ubuntu server上安装安全更新
原始链接:http://serverfault.com/questions/270260/how-do-you-use-apt-get-to-only-install-critical-securit ...
- go:结构体的可访问性
1.要使某个符号对其他包( package)可见(即可以访问),需要将该符号定义为以大写字母开头------摘自go相关书籍2.go只限制包内外的可访问性,而不限制同包内不同文件的可访问性 本文讨论结 ...
- printf对齐
C语言中,将printf函数打印出的字符像表格一样分类对齐.%-10d表示这个字符型占10个字节,负号表示左对齐.即下面表格中的x1位置开始填充.如果是%10d,表示右对齐,即在x10位置对齐. x1 ...