为什么我们需要将一个类库项目继承的程序集添加到使用它的项目中作为引用?

7
我的解决方案由两个项目组成:
  • 一个类库项目(名为DataAccess),定义了一个继承自DbContext的类(名为MyContext)。由于DbContext是在EntityFramework.dll程序集中定义的,因此我需要将对这个程序集的引用添加到这个类库项目中。我对这个机制没有任何疑惑。
  • 一个控制台应用程序项目(名为Tester),它使用上述类库中定义的DataAccess类。添加对上面类库的程序集的引用是可以理解的。不幸的是,在将EntityFramework.dll引用到这个控制台应用程序之前,我不能编译这个解决方案。
为什么我们需要将从一个类库项目继承而来的程序集引用到一个消费者项目中? 在我的心理模型中,只需要把对DataAccess项目程序集的引用添加到Tester项目中,链式引用应该会自动完成。
2个回答

4
否则,当你构建你的项目时,EntityFramework.dll 将不会被复制到输出目录,因此您的库将无法访问它。
如果您能够嵌入 EntityFramework.dll 到您的库中(右键单击引用 -> 属性),那么您就不需要在控制台应用程序中引用它。

3

因为MyContext中的许多行为都是从实体框架的基类继承而来。如果您从Tester调用这些方法(例如SaveChanges()),则Tester应用程序需要引用定义该方法的类库。

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


但是,如果我使用数据库优先,并从数据库添加EDMX,则控制台应用程序不需要entityframework.dll。但是,Code First需要它。 - barteloma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接