我的解决方案包括两个项目:
DataAccess
),它定义了一个继承自MyContext
的类(名为DbContext
)。由于DbContext
在EntityFramework.dll
程序集中定义,我需要将此程序集的引用添加到此类库项目中。我对此机制没有任何困惑。Tester
),它使用上面类库中定义的DataAccess
类。添加对上面类库的程序集的引用是可以理解的。不幸的是,在我将EntityFramework.dll
的引用添加到此控制台应用程序之前,我无法编译解决方案。为什么我们需要将类库项目继承的程序集的引用添加到使用者项目中?
在我的心智模型中,仅将DataAccess
项目程序集的引用添加到Tester
项目中就足够了,链接引用应该自动完成。
答案 0 :(得分:4)
因为否则EntityFramework.dll
在您构建项目时不会被复制到输出目录,并且您的库无法访问它。
如果您能够将EntityFramework.dll
嵌入到您的库中(右键单击参考 - > gt;属性),那么您将无需在控制台应用程序中引用它。
答案 1 :(得分:3)
因为MyContext
中的很多行为都是从实体框架中的基类继承而来的。如果您从SaveChanges()
调用这些方法(例如Tester
),Tester
应用程序需要引用定义方法的类库。
如果您只访问类库中定义的MyContext
方法,我认为您可以不使用对基类的引用。