在尝试使用Entity Framework Model First解决存储库和工作单元模式时,我想出了一个关注点分离问题。在我的解决方案中,我有4个项目:数据,域,存储库,控制台。在我的数据层中,我有EF,edmx文件。在域层,我有我的对象,在存储库层,我有repo接口和UOW类。在控制台层,我尝试在屏幕上写名字。但是为了在屏幕上写名,我必须将EF dll添加到Console Project并将数据库连接字符串写入app.config。但我认为这是错误的分离。控制台项目不应该知道EF,它应该只与Repo层通信才能使用工作单元(UOW)类。
这是我的结构:
两个项目使用EF dll,即
我的简单控制台应用程序引用(这就是我想要的方式,只使用repo层和domian层)
我的控制台代码是:
除非我将EF添加到项目的项目和连接字符串,否则控制台代码不起作用。我究竟做错了什么?任何建议都会有所帮助,我会查看一些github项目,但找不到app.config
或web.config
答案 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的代码参考。只是一个环境负载/包参考。
在我的视图中没有打破代码分离领域驱动的开发范例