之前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 关系配置整理的更多相关文章

  1. 第二节:创建模型,使用Code First,配置映射关系

    这一节,实现模型的创建,配置映射关系 使用Code First数据迁移. 创建模型 一,首先创建几个接口:实体接口,聚合根接口,值对象接口 1,实体接口: 2,聚合根接口: 3,值对象接口: 二,模型 ...

  2. Entity Framework Code First关系映射约定

    本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...

  3. EF CodeFirst 关系配置

    自从开始学习asp.net mvc采用code first以来,关系配置就没有搞清楚过!(⊙﹏⊙)b 笔记之前先感谢以下文章和博主,对他们表示崇拜,由浅入深.举例恰当.拨云见日.茅塞顿开,还有什么词, ...

  4. Fluent Nhibernate code frist简单配置

    Fluent Nhibernate code frist简单配置   前言 在以前的项目开发过程中使用nhibernate做完orm映射工具需要编写大量的xml映射文件,项目过程中往往会因为一个字段等 ...

  5. Entity Framework Code First关系映射约定【l转发】

    本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...

  6. Spring框架学习之高级依赖关系配置(一)

    上篇文章我们对Spring做了初步的学习,了解了基本的依赖注入思想.学会简单的配置bean.能够使用Spring容器管理我们的bean实例等.但这还只是相对较浅显的内容,本篇将介绍bean的相关更高级 ...

  7. EntityFramework Core2.0 多对多关系配置

    ​ 在EF6.0 中,多对多关系配置时,系统会自动生成第三张表,来将两张有互相约束关系的表联系起来,但是在EF Core2.0中,我们需要手动建立第三张表,比如说有两个模型Passage.cs和Cat ...

  8. Code Blocks中配置OpenGL方法

    关于在Code Blocks中配置OpenGL的方法,在网上一直没有找到实用的方法,后来在马龙师兄的帮助下终于配置成功了,现把配置过程记录如下. (1)下载codeblocks,最好是带mingw的版 ...

  9. hibernate多对多关系配置

    一.创建用户,角色实体类. 一名用户可以有多个角色.一个角色可以对于多名用户. 用户实体类 public class User { private int uId; private String uN ...

随机推荐

  1. mac 下设置jdk 路径,设置hadoop 路径

    1. touch ~/.bash_profile  创建一个文件 2.vim ~/.bash_profile JAVA_HOME=/Library/Java/JavaVirtualMachines/j ...

  2. 使用github page 页面建博客中遇到的几个小问题

    Git Bash 中几个常用的一般命令 git init #初始化 git status #状态 git add . #添加文件 git status git commit -m "firs ...

  3. pdfbox加载pdf时遇到wrappedioexception报错处理方式

    现在一个项目要对pdf做处理.由于其中一个pdf约为80M左右,用pdfbox读取pdf时遇到了wrappedioexception错误.监控得到说内存不足.于是请教项目经理.他告诉我在Open De ...

  4. Eclipse使用Maven tomcat:run命令启动web项目时修改默认端口

  5. Python之Web前端jQuery扩展

    Python之Web前端: 一. jQuery表单验证 二. jQuery扩展 三. 滚动菜单 一. jQuery表单验证: 任何可以交互的站点都有输入表单,只要有可能,就应该对用户输入的数据进行验证 ...

  6. Swift 定义函数 参数 返回值

    定义多参数函数 - 用func声明函数  func name(parameters) -> return type { function body } func halfOpenRangeLen ...

  7. JSP复习整理(一)表单

    好久没更了,一周完成了SRDP,一周完成了课程设计,这一周就要好好回顾回顾Java Web的学习轨迹了. 用的eclipse Mars 一.表单 start.jsp <%@ page langu ...

  8. 四、线程同步之Lock和Condition

    Lock同步锁 Lock 在jdk1.5  提供了Lock以便执行同步操作,和synchronized不同的是Lock提供了显示的方法获取锁和释放锁.Lock提供了以下几个方法,请求和释放锁: voi ...

  9. Spring MVC 学习 -- 创建过程

    Spring MVC 学习 -- 创建过程 Spring MVC我们使用的时候会在web.xml中配置 <servlet> <servlet-name>SpringMVC< ...

  10. Android学习资源整理

    官方文档:https://developer.android.com/guide/index.html (万万没想到居然有中文) 网友整理的学习笔记,挺不错的 http://www.runoob.co ...