实体框架6,我应该使用存储库模式吗?

时间:2014-11-27 15:40:50

标签: entity-framework entity-framework-6 repository-pattern

我对Entity Framework很陌生,并且仍然在努力解决它。所以我可以找出许多不同的例子和解释来做什么?

我有几个问题:

在我目前的申请中,我使用的模式包括:

  • 存储库模式
  • (在工作单位之上)

对于每个来自,我宣布一个新的工作单位。因此,当我进行保存更改时,只有相关项目受到影响。

对于复杂的业务逻辑,我在Repository中为每个类编写我的方法 例如:

  • 一种方法:从一个库存位置移除一个项目,将其移动到另一个位置,然后减少旧位置的数量等... - 或者更复杂的作业,从不同的表读取并写入多个表。

但是最近我发现实体框架6.0:

  1. DbContext =工作单位
  2. DbSet相当于REPOSITORY
  3. 所以问题是:

    1. 我应该使用一个DBCONTEXT,还是为每个表单/操作声明一个新的,以便事务保留在本地上下文中(form / operation =
      1. 我如何替换存储库中的方法?
    2. 由于

1 个答案:

答案 0 :(得分:1)

首先尝试将DbContext视为单例对象是一个坏主意,因为您无法管理操作中的事务。你必须按操作实例化你的DbContext。

其次,尝试将“数据层问题”与“业务问题”区分开来。例如:

  

一种方法:从一个库存位置移除一个项目,将其移至另一个位置,然后减少旧位置的数量

我认为您正在编写每个用例的存储库方法,这不是数据层关注的问题。您的存储库只需要知道持久化和检索对象。换句话说,您的存储库方法只是CRUD方法。您的业​​务层将使用此方法来执行业务逻辑。