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 ...
随机推荐
- 高程(3):操作符、for、for...in循环、break/continue/return语句、函数等
1.关系操作符 注意点:1)比较操作数是两个字符串,是比较字符串的字符编码值. 如:"a" > "b" 返回 false:"a" & ...
- 【Android自学日记】两种适配器的使用
ArrayAdapter适配器: (1)用于显示基本的文字内容 (2)基本使用过程:新建适配器---创建或加载数据源---适配器加载数据源---视图加载适配器 ArrayAdapter(上下文,当前L ...
- 适配ios9出现的问题:-canOpenURL: failed for URL
-canOpenURL: failed for URL: "wtloginmqq2://qzapp" - error: "(null)" 2015-09-13 ...
- css text-overflow:ellipsis 文字多余剪切
text-overflow: ellipsis;多度剪切white-space: nowrap;禁止换行overflow: hidden;多余隐藏
- WindowsForm多窗体、多窗体传值、控件数据绑定--2016年12月8日
多窗体 Show Form1 f1 = new Form1(); f1.Show(); ShowDialog--在父窗体之上 Form1 f1 = new Form1(); f1.ShowDialog ...
- svn检出项目
第一步: 第二步: 第三步: 第四步: 第五步: 填写项目名称 第六步: 选择路径 第七步:
- apache如何解决跨域资源访问
很多时候,大中型网站为了静态资源分布式部署,加快访问速度,减轻主站压力,会把静态资源(例如字体文件.图片等)放在独立服务器或者CDN上,并且使用独立的资源域名(例如res.test.com) 但是在实 ...
- 【iBeacon】iBeacon前沿初探技术备忘
iBeacon是工作在蓝牙4.0(BLE)硬件下的一种协议,属于蓝牙4.0广播协议的一种,通过该协议和一个蓝牙模块可以实现非接触的身份识别.位置检测等. How does BLE communicat ...
- cocos2d-js 学习笔记 --安装调试(1)
目前从国内来看,比较知名的,适合前端程序员使用的游戏框架,基本是 egret 和cocos2d-js;刚好两个框架都学习了下, egret的是最近兴起的一个框架主要使用TypeScript.js语言做 ...
- git常用的命令集合
Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone g ...