实体框架术语中"模型"和"上下文"之间有什么区别?

use*_*072 15 c# entity-framework

实体框架术语中"模型"和"上下文"之间有什么区别?

我在应用程序中使用Entity Framework数据库第一种方法.这些术语出现了很多次,因为我一直在阅读关于EF实施策略的不同论坛和文章.我似乎无法弄清楚这两者是如何不同的(甚至不仅仅是实体框架,而是一般的软件开发).人们使用这些词语就好像它们不同,但是有些人似乎可以互换地使用这些词语.

Ger*_*old 10

上下文

这很简单.上下文是实体框架数据访问层的核心DbContext或旧ObjectContext类.它通过强类型的实体集提供透明的数据库访问,跟踪和保存更改,管理数据库事务和连接,并包含许多实用程序方法,以促进各种数据访问任务(尤其DbContext).

模型

这可以是两个(或三个)事情.

  • 数据模型或商店模型.哪个是EF数据访问层下的数据库的关系模型.
  • 概念模型或类模型.哪个是表示数据库的.Net类模型.此模型可以由EF(数据库优先)生成,也可以是现有的类模型(代码优先).概念模型和商店模型通过映射链接,因此EF知道如何从数据库记录中填充.Net类,相反,如何将.Net类保存到数据库中.
  • 有些人将概念模型中的类称为"模型".这没有错,但我更喜欢使用名称实体.

因此上下文模型是两个完全不同的东西.您可能会说上下文是两种不同类型模型之间的中间人.

  • @ user1431072可能有理由有单独的上下文,每个上下文代表数据库的不同部分.例如,如果存在用于授权的单独表,则可以具有授权上下文(具有附带的授权类模型)和业务上下文.不可能存在比上下文更多(存储)模型:上下文访问一个数据库. (2认同)