利用知识库,UoW模式和实体框架分离关注点实践

时间:2013-11-13 10:11:05

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

在尝试使用Entity Framework Model First解决存储库和工作单元模式时,我想出了一个关注点分离问题。在我的解决方案中,我有4个项目:数据,域,存储库,控制台。在我的数据层中,我有EF,edmx文件。在域层,我有我的对象,在存储库层,我有repo接口和UOW类。在控制台层,我尝试在屏幕上写名字。但是为了在屏幕上写名,我必须将EF dll添加到Console Project并将数据库连接字符串写入app.config。但我认为这是错误的分离。控制台项目不应该知道EF,它应该只与Repo层通信才能使用工作单元(UOW)类。

这是我的结构:

enter image description here

两个项目使用EF dll,即

enter image description here

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

enter image description here

我的控制台代码是:

enter image description here

除非我将EF添加到项目的项目和连接字符串,否则控制台代码不起作用。我究竟做错了什么?任何建议都会有所帮助,我会查看一些github项目,但找不到app.configweb.config

中没有连接字符串的简单解决方案

1 个答案:

答案 0 :(得分: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的代码参考。只是一个环境负载/包参考。

在我的视图中没有打破代码分离领域驱动的开发范例