为什么我们需要将类库项目inheritance的程序集的引用添加到使用者项目中?

我的解决方案包括两个项目:

  • 一个类库项目(名为DataAccess ),它定义了一个inheritance自DbContext的类(名为MyContext )。 由于在EntityFramework.dll程序DbContext定义了DbContext ,我需要将此程序集的引用添加到此类库项目中。 我对这个机制没有任何困惑。
  • 一个控制台应用程序项目(名为Tester ),它使用DataAccess类库中定义的DataAccess类。 添加对上面类库的程序集的引用是可以理解的。 不幸的是,在我将EntityFramework.dll的引用添加到此控制台应用程序之前,我无法编译解决方案。

为什么我们需要将类库项目inheritance的程序集的引用添加到使用者项目中? 在我的心智模型中,仅将DataAccess项目程序集的引用添加到Tester项目中就足够了,链接引用应该自动完成。

因为MyContext的很多行为都是从entity framework中的基类inheritance而来的。 如果从Tester调用这些方法(例如SaveChanges() ),则Tester应用程序需要引用定义方法的类库。

如果您只访问在MyContext中定义的MyContext方法,我认为您可以不使用对基类的引用。

因为在构建项目时, EntityFramework.dll不会被复制到输出目录,并且您的库将无法访问它。

如果您能够将EntityFramework.dll嵌入到库中(右键单击引用 – >属性),则无需在控制台应用程序上引用它。