• EF Core学习笔记:额外的外键属性 / 单项导航属性


    虽然一直在做定制化开发,但是不能总是食嗟来之食。很多东西还是自己必须要掌握的。

    额外的外键属性 

    为什么需要外键属性

    1、EF Core会在数据表中建外键列。

    2、如果需要获取外键列的值,就需要做关联查询,效率低。(各种join)

    3、需要一种不需要Join直接获取外键列的值的方式。

    设置外键属性

    1、在实体类中显式声明一个外键属性。

    2、关系配置中通过HasForeignKey(c=>c.ArticleId)指定这个属性为外键。

    3、除非必要,否则不用声明,因为会引入重复。

    然后记得去配置!不然EFcore不知道这个外键是哪里来的。

    复习一下 hasOne( )

     

     单项导航属性

     双向导航属性的麻烦:很多的表都会引用同一张表,如此,user表会建立很多反向的导航属性。

    没必要

     所以我们需要单项导航属性。

    要求者 和 批准者 都指向user表

     配置方法

    不设置反向的属性,然后配置的时候WithMany()不设置参数即可。

    单向属性如何反向获取数据

    1. //再查询一下即可:
    2. ctx.Leaves.Where(l => l.Requester == u)

    对于主从结构的“一对多”表关系,一般是声明双向导航属性。

    而对于其他的“一对多”表关系:如果表属于被很多表引用的基础表,则用单项导航属性,否则可以自由决定是否用双向导航属性。

     考虑到有单项导航属性的可能,我们一般用HasOne().WithMany()

     

  • 相关阅读:
    【Python】数据科学之多维数组对象笔记(一)
    Github 2024-07-11 开源项目日报 Top10
    Jmeter 自动化性能测试常见问题汇总
    docker安装redis
    RobotFramework+Eclispe环境安装篇
    2023/9/15 -- C++/QT
    论文阅读——Towards Adversarially Robust Object Detection
    在线预览编辑PDF::RAD PDF for ASP.NET
    若依框架入门一
    Linux下的Swap内存
  • 原文地址:https://blog.csdn.net/dongnihao/article/details/125882757