【问题标题】:Separation of Concerns Practice with Repository, UoW Pattern and Entity Framework将关注点实践与存储库、UoW 模式和实体框架分离
【发布时间】:2013-11-13 10:11:04
【问题描述】:

我在尝试使用实体框架模型优先解决存储库和工作单元模式时提出了关注点分离问题。在我的解决方案中,我有 4 个项目:数据、域、存储库、控制台。在我的数据层中,我有 EF、edmx 文件。在域层,我有我的对象,在存储库层,我有 repo 接口和 UOW 类。在控制台层,我尝试在屏幕上写名字。但是为了在屏幕上写名字,我必须将 EF dll 添加到控制台项目并将数据库连接字符串写入 app.config。但我猜这是关注点分离的错误。控制台项目不应该知道 EF,它应该只与 Repo 层通信以使用 Unit of Work(UOW) 类。

这是我的结构:

两个项目使用 EF dll

我的简单控制台应用参考(这就是我想要的样子,只使用 repo 层和 domian 层)

我的控制台代码是:

这里控制台代码不起作用,除非我将 EF 添加到项目并将连接字符串添加到项目。我究竟做错了什么?任何建议都会有所帮助,我查看了一些 github 项目,但找不到在 app.configweb.config 中没有连接字符串的简单解决方案

【问题讨论】:

  • 正在运行的应用程序总是提供连接字符串。对于数据层,这是一个注入依赖。如果 DAL 有连接字符串,您将永远无法将它与其他数据库一起使用。
  • 为什么要将它与其他数据库一起使用?你什么意思?
  • 开发、测试、生产……当您的应用程序在客户的本地运行时,您如何告诉 DAL 使用哪个数据库?
  • 好的,谢谢,你是对的

标签: c# entity-framework repository-pattern unit-of-work


【解决方案1】:

连接字符串依赖并不是我认为违反关注点分离的东西。 启动项目 了解环境。 但是:

如果您想避免使用连接字符串,您可以创建传递连接信息的上下文

public class MyContext : DbContext
public MyContext(DbConnection dbConnection, bool contextOwnsConnection)
        : base(dbConnection, contextOwnsConnection) 

我还引用了 EF 作为包,因此可以加载它。

 <package id="EntityFramework" version="6.0.1" targetFramework="net45" />

但我刚刚检查了 Resharper。可以安全删除。所以我没有对 EF 的代码引用。只是一个环境负载/包参考。

在我看来没有打破代码分离领域驱动的开发范式

【讨论】:

    猜你喜欢
    • 2010-12-19
    • 2020-06-02
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多