我有一个分层的arquitecture [WebAPI-> Logic-> Repository],因此WebAPI不了解存储库层。我使用Unity进行依赖项注入,因此没有直接引用其他层。
“存储库”层的实现使用Entity Framework,并且EntityFramework程序集存在于其“ / bin / Release”中
我为每个层都有一个项目,用于处理Unity服务的注册,并且EntityFramework程序集也出现在其“ / bin / Release”中。
要加载依赖项,我用Assembly.LoadFrom加载了注册项目,因此它也加载了其依赖项。
不幸的是,这没有用。 DbContext构造函数抛出:
System.TypeInitializationException: 'The type initializer for
'System.Data.Entity.Internal.AppConfig' threw an exception.'
FileNotFoundException: Could not load file or assembly 'EntityFramework,
Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of
its dependencies.
我试图将“ configSections”和“ entityFramework”复制到WebAPI.config中,即使我怀疑它不起作用(也没有)。
我在这里得到的是上下文执行某种延迟绑定,因此它在WebAPI参考中查找资产。 _是否可以在注册或实施项目中使用这些方法?
我知道可以在WebAPI中安装EntityFramework,但是我不想这样做。还有另一种方法吗?
答案 0 :(得分:0)
我找到了方法!
System.AppDomain.CurrentDomain.AssemblyResolve System.ResolveEventHandler
我已经注册了处理程序,因此当程序集无法加载时,如果其EntityFramework,我将使用Assembly.LoadFrom
更新
使用基于代码的配置(DbConfiguration),您可以通过代码而不是延迟绑定通过代码链接程序集