你的位置:首页 > ASP.net教程

[ASP.net教程]Code First 关系配置整理

 之前EF一直有性能问题以及使用便利性问题, 终于到了EF6有了Migrations之后, 小弟也决定加入EF阵营了.

在学习FluentAPI配置关系的时候, 发现网上的好几个教程实际上博主自己都没有搞明白, 或者说博主自己的理解有偏差, 还好小哥一般不轻易相信别人......

终于在最后看到一篇对关系解释比较客观, 引导性重于强定义的文章. 考虑到广大网友可能会被之前那些文章带偏. 我这里整理了一下我自己的理解, 同时也将这篇好文章转出来.

 

所有的配置代码均写到 产品FluentAPI 中

目标对象关系对象关系方向目标代码关系代码
产品保修卡1共1←→EntityEntity
 说明书1-?1ID?
    Entity
 
 合格证1-1ID
    Entity
 
 图片1-?N←→List<Entity>ID
    Entity
 标签?N-?N←→List<Entity>List<Entity>
  ?N-?NList<Entity> 

 

关系说明
1共1相同编号, 共享编号
1-?1不同编号, 单向, 可选
    内容极少的说明书, 直接印刷到产品身上, 没有单独纸质说明书
1-1不同编号, 单向, 必要
1-?N必要
?N-?N必要(可选)
?N-?N单向

 

关系code
1共1HasRequired.WithRequiredPrincipal
1-?1HasOptional.WithMany.HasForeignkey
1-1HasRequired.WithMany.HasForeignkey
1-?NHasMany.WithRequired.HasForeignkey
?N-?NHasMany.WithMany.Map(ToTable(Name)|LeftKey|RightKey)
?N-?NHasMany.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