Есть ли способ не ссылаться на EntityFramework в WebAPI? - PullRequest
0 голосов
/ 16 апреля 2019

У меня многоуровневая архитектура [WebAPI -> Logic -> Repository], поэтому WebAPI не знает об уровне хранилища. Я использую Unity для внедрения зависимостей, поэтому нет прямых ссылок на другие слои.

Layers

Реализация уровня Repository использует 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 для сборок. _ Есть ли способ использовать их в проектах регистрации или реализации?

Я знаю, что установка EntityFramework в WebAPI будет работать, но я не хочу этого делать. Есть ли другой способ?

1 Ответ

0 голосов
/ 16 апреля 2019

Я нашел способ!

System.AppDomain.CurrentDomain.AssemblyResolve System.ResolveEventHandler

Я зарегистрировал обработчик, поэтому, когда сборка не загружается, если ее EntityFramework, я использую Assembly.LoadFrom


Обновление

Используя конфигурацию на основе кода (DbConfiguration), вы можете связывать сборки с помощью кода, а не с отложенным связыванием

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...