使用 em.create 创建的实体是否得到管理和持久化?
Are entities created with em.create managed and persisted?
https://mikro-orm.io/docs/entity-manager/ 上的文档说
An entity is managed if it’s fetched from the database (via em.find(), em.findOne() or via other managed entity) or registered as new through em.persist().
但是没有提到em.create
方法。
使用 em.create
创建的实体是否会自动管理,它们是否会被 em.flush
持久化?
如果是这样,是否可以创建一个不会被 em.flush
和 em.create
持久化的实体?
该方法是EntityFactory
的快捷方式,它所做的只是创建实例,就像您手动使用实体构造器一样。它不会被持久化,也不会被管理(实体在flush调用之后变为托管,perist本身只是为了标记它)。
// this is the same
const a = em.create(User, { name: '...' });
em.persist(a);
await em.flush();
// as this
const a = new User();
a.name = '...';
em.persist(a);
await em.flush();
在这两个示例中,如果没有 em.persist
,数据库中将不会存储任何内容。
https://mikro-orm.io/docs/entity-manager/ 上的文档说
An entity is managed if it’s fetched from the database (via em.find(), em.findOne() or via other managed entity) or registered as new through em.persist().
但是没有提到em.create
方法。
使用 em.create
创建的实体是否会自动管理,它们是否会被 em.flush
持久化?
如果是这样,是否可以创建一个不会被 em.flush
和 em.create
持久化的实体?
该方法是EntityFactory
的快捷方式,它所做的只是创建实例,就像您手动使用实体构造器一样。它不会被持久化,也不会被管理(实体在flush调用之后变为托管,perist本身只是为了标记它)。
// this is the same
const a = em.create(User, { name: '...' });
em.persist(a);
await em.flush();
// as this
const a = new User();
a.name = '...';
em.persist(a);
await em.flush();
在这两个示例中,如果没有 em.persist
,数据库中将不会存储任何内容。