1

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

这是我的结构:

在此处输入图像描述

两个项目使用 EF dll,即

在此处输入图像描述

我的简单控制台应用程序引用(这就是我想要的,只使用 repo 层和 domian 层)

在此处输入图像描述

我的控制台代码是:

在此处输入图像描述

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

4

1 回答 1

0

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

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

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 的代码引用。只是一个环境负载/包参考。

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

于 2013-11-13T13:20:48.183 回答