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 ...
随机推荐
- php中的高危函数
phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息. 危险等级:中 passthru() 功能描述:允许执行一个外部程序并回显输出,类似于 exec(). 危险等级 ...
- Word2010如何恢复没有保存的文件
今天临时遇到的,百度下还真有办法,借助文件自动保存的位置可以进行恢复. 给一个参考链接,有时间详细整理 简单说明,也就是利用word自动保存功能找到上次自动保存的位置 因为这个功能默认开启的 文件-- ...
- dom 无法找到 body节点问题
最近在学习html dom节点知识时候,对照代码自己敲了一边,始终获取不到文档中的body对象,代码如下(未修改前): <!doctype html> <html> <h ...
- 初次启动app校验的活动图和分析
初次启动活动图 version 1 version 2 version 3 根据上图的活动图分析,可能存在较严重的问题: 主线程中如果发现是sdcard的url,则可能进行重命名 FirstEnter ...
- DBCP连接池配置示例
<bean id="dataSourceOracle2" class="org.apache.commons.dbcp.BasicDataSource" ...
- .NET MVC Filter异常处理
MVC程序中自带的HandleErrorAttribute,来处理异常,不在显示黄页.前提是在web.config 中 system.web中关闭customerError选项. 但是很多情况下调试异 ...
- Appium_Python_Api文档
1.contextscontexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控 ...
- 北漂的生活 - python 面试
第一次来北京,先谈谈感受吧.都说北京的雾霾非常严重,可能是我来的时间短,暂时我还没有遇到特别恶劣的天气,感觉还是很美好的.和朋友住在顺义,出去一次真的远啊,旁边暂时还没有找到清真的饭馆(本人少数民族) ...
- iOS 自动追加版本时间版本号脚本
buildNumber=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "${PROJECT_DIR}/${I ...
- 3.4.4 数据预留和对齐(skb_reserve, skb_push, skb_put, skb_pull)
转自:http://book.51cto.com/art/201206/345043.htm <Linux内核源码剖析:TCP/IP实现>本书详细论述了Linux内核2.6.20版本中TC ...