typmorm 类似ef的懒加载
在TypeORM中,可以通过设置关系的eager: false
属性来实现类似于Entity Framework Core(EF)的懒加载功能。这意味着关联的实体将默认不会立即加载,而是在访问它们时才加载。
以下是一个简单的例子,演示如何在TypeORM中实现懒加载:
import { Entity, PrimaryGeneratedColumn, Column, OneToMany, ManyToOne, ManyToMany, JoinTable, RelationId, CreateDateColumn, UpdateDateColumn } from 'typeorm'; @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() name: string; @OneToMany(() => Post, post => post.user, { eager: false }) // 懒加载 posts: Post[]; } @Entity() export class Post { @PrimaryGeneratedColumn() id: number; @Column() title: string; @Column() content: string; @ManyToOne(() => User, user => user.posts, { eager: false }) // 懒加载 user: User; }在上述代码中,User
实体有一个posts
属性,它是Post
的一个OneToMany
关系。通过将eager
属性设置为false
,当你访问user.posts
时,Posts数据才会被加载。这就是实现懒加载的方法。
要注意的是,懒加载只有在查询关联数据时才会生效。如果你在创建查询时已经加载了关联数据(例如通过join
或者preload
方法),则懒加载不会起作用。