C# 为什么我们需要将类库项目从中继承的对程序集的引用添加到使用者项目中?
我的解决方案包括两个项目:C# 为什么我们需要将类库项目从中继承的对程序集的引用添加到使用者项目中?,c#,.net,entity-framework,C#,.net,Entity Framework,我的解决方案包括两个项目: 一个类库项目(名为DataAccess),定义从DbContext继承的类(名为MyContext)。由于DbContext是在EntityFramework.dllassembly中定义的,因此我需要将对该程序集的引用添加到此类库项目中。我对这个机制并不感到困惑 一个控制台应用程序项目(名为Tester),它使用上面类库中定义的DataAccess类。添加对上面类库程序集的引用是可以理解的。不幸的是,我无法编译该解决方案,除非我将对EntityFramework.
- 一个类库项目(名为
),定义从DataAccess
继承的类(名为DbContext
)。由于MyContext
是在DbContext
assembly中定义的,因此我需要将对该程序集的引用添加到此类库项目中。我对这个机制并不感到困惑EntityFramework.dll
- 一个控制台应用程序项目(名为
),它使用上面类库中定义的Tester
类。添加对上面类库程序集的引用是可以理解的。不幸的是,我无法编译该解决方案,除非我将对DataAccess
的引用添加到此控制台应用程序中EntityFramework.dll
在我的心智模型中,只需将对
DataAccess
项目程序集的引用添加到Tester
项目中就足够了,链接引用应该自动完成。因为MyContext
中的许多行为都是从实体框架中的基类继承的。如果从Tester
调用这些方法(例如SaveChanges()
),则Tester
应用程序需要对定义该方法的类库的引用
如果您只访问类库中定义的
MyContext
方法,我认为您可以不引用基类。因为否则在构建项目时,EntityFramework.dll
不会复制到输出目录,并且库将无法访问它
如果您能够将
EntityFramework.dll
嵌入到库中(右键单击引用->属性),则无需在控制台应用程序上引用它 但如果我首先使用数据库并从数据库添加EDMX,则控制台应用程序不需要entityframework.dll。但是code First需要它。