有没有办法在WebAPI中没有对EntityFramework的引用?

时间:2019-04-15 22:24:02

标签: c# asp.net entity-framework asp.net-web-api

我有一个分层的arquitecture [WebAPI-> Logic-> Repository],因此WebAPI不了解存储库层。我使用Unity进行依赖项注入,因此没有直接引用其他层。

Layers

“存储库”层的实现使用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,但是我不想这样做。还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

我找到了方法!

System.AppDomain.CurrentDomain.AssemblyResolve System.ResolveEventHandler

我已经注册了处理程序,因此当程序集无法加载时,如果其EntityFramework,我将使用Assembly.LoadFrom


更新

使用基于代码的配置(DbConfiguration),您可以通过代码而不是延迟绑定通过代码链接程序集