首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET ORM核心功能之导航属性- EFCore和 SqlSugar

导航属性 导航属性是作为.NET ORM核心功能中的核心,在SqlSugar没有支持导航属性前,都说只是一个高级DbHelper, 经过3年的SqlSugar重构已经拥有了一套 非常成熟的导航属性体系...,本文不是重点讲SqlSugar而是重点讲导航属性的作用,让更多写Sql人还未使用ORM的人了解到ORM的作用。....Include(z1 => z1.Education) .Include(z1 => z1.WorkExperience).ToList() EF Core导航属性配置 EF多对多 public class...Student_004DTO { books = x.books }, true)//true是自动映射其他属性...原码下载: https://github.com/DotNetNext/SqlSugar 总结: .NET中无论是EF CORE还是SQLSUGAR 使用了导航属性都不再需要费心写繁琐的SQL语句,只需简单地调用导航属性

59540

EF Core 导航属性配置

在上一篇,大概介绍了Entity Framework Core关于关系映射的逻辑。在上一篇中留下了EF的外键映射没有说,也就是一对一,一对多,多对一,多对多的关系等。...这一篇将为大家细细分析一下,如何设置这些映射。 1. 实体之间的关系 从数据表来考虑,两个表之前的关系有一对一,一对多(多对一)和多对多的关系。...一对一关系 先给出两个示例类,为了方便理解,我只保留了主键和导航属性: public class SingleModel { public int Id { get; set; } public...之前在说的时候,EF会根据导航属性自动生成一个外键,但是这一条在一对一这里就有点不太起作用了。所以我们必须手动在导航属性的一侧实体类里配置外键,并用 HasForeignKey指定。...在EF 6中 中间表可以仅存在于关系中,但是在EF Core3 还没有这个的支持。也就是当前文章使用的版本。 5. 附加 在EF的外键约束中,导航属性是默认可空的。

3.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    EF 通过DataAnnotations配置属性和类型

    ForeignKey")] public int PrimaryKey{ get; set; } 注意,指定列名存在(外键必须存在),如上面的ForeignKey,则类中必须存在名称为ForeignKey的属性...RequiredAttribute,代码如下: [Required] public string Name{ get; set; } 5、数据类型约束 通过初始化ColumnAttribute类的TypeName属性来配置数据类型约束...Computed,EF会认为该列是通过其它列计算得出的,不会将其持久化到数据库中。...当实体类中定义了某些字段,这些字段是通过一些计算或者合并得到的,我们并不需要将它同步到数据库中,就可以通过配置不让它生成到数据库中,EF中通过NotMappedAttribute特性来设置,代码如下:...[NotMapped] public string NotNeeded { get; set; } 12、忽略表映射 忽略表映射和忽略列映射一样.

    1.1K50

    Angular核心-路由和导航

    Angular核心-路由和导航 博客首页:蔚说的博客 欢迎关注点赞收藏⭐️留言 作者水平很有限,如果发现错误,求告知,多谢! 有问题可私信交流!!!...(达内教育学习笔记)仅供学习交流 @[TOC]Angular核心-路由和导航) 多页面应用 :一个项目有多个完整的HTML文件,使用超链接跳转–摧毁一颗DOM树,同步请求另一颗,得到之后再重建新的DOM...component user-center 定义“路由词典”—[{URL-组件}],[{URL-组件}] //app.midule.ts 为每个路由组件分配一个路由地址 //声明路由词典-路由地址和路由组件的对应集合...路由跳转/导航:从一个路由地址跳转到另一个 实现方案: 方式1:使用模板方法 注意:1.可用于任意标签上 2.跳转地址应该以/开头,防止相对方式跳转 实例: index works!...,canActivate:[LoginGuard]} 实例: 声明路由词典-路由地址和路由组件的对应集合 //声明路由词典-路由地址和路由组件的对应集合 let routes = [ {path:

    2.3K20

    Java属性和Map映射通用方案

    一、背景 有类似JSON的key和实体属性不对应的场景,可以通过JSON类库提供的注解加在属性上填写值别名,然后JSON转换类可以实现正确的转换。...但是如果需求和JSON没半毛钱关系,如实现Map 到对象属性的映射,而且map中的key和属性名还不一致。肿么办? 注意这里的map的value实际适合属性的类型是保持一致的!!!...ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface Field2Map { /** * 别名(属性名和...在工具类或者Service中定义一个缓存,结构如下  Map> cache = new ConcurrentHashMap(); 存放解析的类到带有Alias注解属性的调用列表,方便和map直接进行转化...2.2 第三方库 可以使用Orika等属性映射工具来实现类似功能,不过由于个别库需要手动写映射,没有注解这么方便。

    1.1K10

    MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射

    在上一章中我们学习了《MyBatis学习总结(一)——ORM概要与MyBatis快速起步》,这一章主要是介绍MyBatis核心配置文件、使用接口+XML实现完整数据访问、输入参数映射与输出结果映射等内容...一、MyBatis配置文件概要 MyBatis核心配置文件在初始化时会被引用,在配置文件中定义了一些参数,当然可以完全不需要配置文件,全部通过编码实现,该配置文件主要是是起到解偶的作用。...-- 批量加载映射配置文件,mybatis自动扫描包下面的mapper接口进行加载 遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;...,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。...如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。  最终完成的映射器: <?

    1.2K20

    MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射

    在上一章中我们学习了《MyBatis学习总结(一)——ORM概要与MyBatis快速起步》,这一章主要是介绍MyBatis核心配置文件、使用接口+XML实现完整数据访问、输入参数映射与输出结果映射等内容...一、MyBatis配置文件概要 MyBatis核心配置文件在初始化时会被引用,在配置文件中定义了一些参数,当然可以完全不需要配置文件,全部通过编码实现,该配置文件主要是是起到解偶的作用。...-- 批量加载映射配置文件,mybatis自动扫描包下面的mapper接口进行加载 遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;...,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。...如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。  最终完成的映射器: <?

    1.4K30

    MyBatis 学习笔记(5) XML配置文件和XML映射文件

    2.知识 一般来说,在项目中配置 mybatis 需要这几项: 一个 XML配置文件: mybatis-config.xml 多个 XML 映射文件:比如UserMapper.xml 从模块角度看,对于一个小模块...true | false autoMappingBehavior 指定 MyBatis 应如何自动映射列到字段或属性。...NONE, PARTIAL, FULL autoMappingUnknownColumnBehavior 指定发现自动映射目标未知列(或未知属性类型)的行为。...true | false mapUnderscoreToCamelCase 是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。...结果集映射,指示如何读取结果集: resultMap resultMap 元素是 MyBatis 中最重要最强大的元素。它指示了如何读取结果集。描述了数据库字段和java 字段之间的对应关系。

    1.2K20

    EF Core的增删改查

    0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置。 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法。...1.2 配置文件的加载或者实体对象的托管 如果我们不使用配置文件的话,就必须在EF Core的上下文类里添加一个类型是DbSet的属性。...也就是说,如果使用注解形式配置映射关系,那么势必会造成影响。 当然了,使用配置文件必然会导致项目的类增多,而且大量的重复类可能会出现。...不过如果有导航属性的话,在新增的时候,EF Core会自动检索导航属性的另一端是否需要新增到数据库中,如果需要新增的话,EF Core会自动标记为新增的。...而删除,如果在配置导航属性时,没有设置级联删除,删除当前元素,如果另一端的外键是可空类型的,并不会删除导航属性另一端的元素只会设置外键指向为NULL,如果另一端外键是不可空的,那么就会同时删除。

    3.2K20

    Entity Framework 系统约定配置

    使用过其他ORM框架的朋友可能知道一般ORM都有对应的映射配置文件(一般是一个Xml文件),但是EF并没有。...在EF中是以一种约定的方式进行表、列同实体类进行映射的,与此同时为了提高最大的灵活性EF中可以通过Fluent API和Data Annotations两种方式对映射进行灵活配置。...3.使用导航属性约束两个表之间的关系,在从表数据类中除了导航属性,推荐定义一个外键属性在从表数据类中(如果不指定将默认生成一个“+”的外键列;此外在主表中推荐定义一个集合从表属性用户导航...例如有一个Order类,主键为OrderID,在OrderDetail类中有一个导航属性Order(Order类型),那么当你定义一个OrderID在OrderDetail中,那么在Order和OrderDetail...在EF提供了两种方式进行映射配置:Data Annotations和Fluent API。

    84020

    SpringBoot3中的属性绑定注解和YMAL配置文件、日志

    属性绑定@ConfigurationProperties: 声明组件的属性和配置文件哪些前缀开始项进行绑定@EnableConfigurationProperties:快速注册注解:使用场景:SpringBoot...因为组件都扫描不进来,此时使用这个注解就可以快速进行属性绑定并把组件注册进容器将容器中任意组件(Bean)的属性值和配置文件的配置项的值进行绑定1、给容器中注册组件(@Component、@Bean)2...、使用@ConfigurationProperties 声明组件和配置文件的哪些配置项进行绑定2....示例@Component@ConfigurationProperties(prefix = "person") //和配置文件person前缀的所有配置进行绑定@Data //自动生成JavaBean属性的...之类的中间件,这和SpringBoot没关系,都是日志框架自己的配置,修改配置文件即可业务中使用slf4j-api记录日志。

    67920

    【js】对象属性的拦截和Proxy代理与Reflect映射的用法与区别

    对象属性的拦截 介绍 在对象中,set 和 get 是属性的特性,用于定义属性的赋值和取值行为。它们允许您在属性被赋值或取值时执行自定义的逻辑。...通过使用 Proxy,我们可以对目标对象的属性访问、赋值、删除等操作进行拦截和处理。...对象属性拦截和对象拦截区别 区别就跟名字一样,对象属性拦截,是你在对象中给某个属性设置拦截操作,当它获取,和赋值的时候触发,对象拦截 是设置proxy代理,通过代理来访问,既然通过代理来访问对象属性,则任何操作...映射 介绍 Reflect 是一个内置的 JavaScript 对象,它提供了一组用于操作对象的方法。这些方法与对象的操作行为相对应,例如属性访问、函数调用、实例化等。...(Object Property Interception):可以使用对象自身的 get 和 set 方法来拦截属性的获取和设置操作。

    64120

    C# 数据操作系列 - 6 EF Core 配置映射关系

    对于其他属性,EF会自动按照同名的形式映射到数据表中。 对于外键,如果在类里添加了引用类型,而这个引用类型也在EF的上下文中,EF会把这种属性称为导航属性。...EF一旦在类里检索到了导航属性,就会去寻找对应的外键。EF会认为 属性名+Id或者类名+Id 可能是外键属性,如果找到名称一致且类型与导航属性目标类的主键类型一致,则认为是外键。...如果类型不一致,EF则认为该类设置有误。如果没找到符合名称要求的属性,EF会自己添加一个外键属性。 对于一对一,EF要求导航属性双方都应该具有外键配置。 一对多,EF要求多的一方设置外键。...同时如果在一方这边设置了集合类型的导航属性,那么EF会自动到目标类里寻找外键属性。 说完了一对一和一对多,那么多对多呢? 如果没有声明的话, EF会生成一个中间表。 2....,值由数据库提供 [ForeignKey("ModelAId")] 表示该导航属性具体值由 名称为 ModelAId 的属性维护,如果没有该属性,EF则记录添加但不对外显示。

    2.8K21
    领券