zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    给VS2010自动设置模板,加头注释
    使用委托解决"线程间操作无效: 从不是创建控件“textBox1”的线程访问它" 问题
    正则表达式
    用rz,sz命令在xshell传输文件
    较快的centos源
    《高性能Linux服务器构建实战》一书纠错汇总(2月14日更新)
    cat和rev
    配置centos6.0为Router
    同一个进程中生成的不同线程的栈是互相可见的
    C++用new来创建对象和非new来创建对象的区别
  • 原文地址:https://www.cnblogs.com/motorcycle-stone/p/4920032.html
Copyright © 2011-2022 走看看