请问Microsoft Entity Framework Core实现的是Data Mapper还是Active Record模式?
EF Core:Data Mapper 还是 Active Record 模式?
EF Core本质上实现的是Data Mapper设计模式,而非纯Active Record模式,具体细节如下:
核心为Data Mapper模式
- EF Core中的实体类通常是纯POCO(Plain Old CLR Object),仅作为数据载体,自身不包含任何持久化相关方法(比如保存、删除逻辑)。
- 所有数据访问与持久化逻辑由
DbContext和DbSet<T>统一负责:DbContext维护实体与数据库表的映射关系,处理CRUD操作执行、事务管理等核心逻辑,是实体与数据库之间的"映射器"。
为何会有Active Record的错觉?
- 当我们通过
dbContext.Users.Add(newUser)后调用dbContext.SaveChanges(),或者利用导航属性直接关联实体操作时,看起来像是实体在参与持久化,但实际上所有逻辑都由DbContext驱动,实体本身无法独立完成数据保存或删除。
- 当我们通过
与纯Active Record模式的区别
- 纯Active Record模式中,实体类会自带
Save()、Delete()等方法,自身就能完成与数据库的交互(比如Ruby on Rails的Active Record)。而EF Core的实体完全依赖DbContext,不具备自主持久化的能力。
- 纯Active Record模式中,实体类会自带
内容的提问来源于stack exchange,提问作者Alex Alvarez Gárciga
相关产品推荐
相关产品推荐

