0

Вот моя архитектура решения:Добавление конфигурации Entity Framework в Visual Studio расширения

  • VM (класс Lib) => ссылки SQLite.
  • App (WPF Desktop App) => ссылки VM.
  • VSIX (расширение Visual Studio) => ссылки VM.

Я скопировал связанные с EF провайдеры от app.config проекта VM как к настольному приложению, так и к проектам VSIX. Приложение рабочего стола работает отлично, в то время как проект VSIX генерирует следующее исключение:

Для провайдера ADO.NET не найдено ни одного провайдера инфраструктуры Entity с именем «System.Data.SQLite.EF6». Убедитесь, что провайдер зарегистрирован в разделе «entityFramework» файла конфигурации приложения.

Есть ли что-то особенное в случае проектов расширения?

ответ

0

Добавление последней строки в следующем классе фиксированной для меня:

public class SQLiteConfiguration : DbConfiguration 
{ 
    public SQLiteConfiguration() 
    { 
    SetProviderFactory("System.Data.SQLite", SQLiteFactory.Instance); 
    SetProviderFactory("System.Data.SQLite.EF6", SQLiteProviderFactory.Instance); 
    SetProviderServices("System.Data.SQLite", (DbProviderServices)SQLiteProviderFactory.Instance.GetService(typeof(DbProviderServices))); 
    SetProviderServices("System.Data.SQLite.EF6", (DbProviderServices)SQLiteProviderFactory.Instance.GetService(typeof(DbProviderServices))); 
    } 
} 

Не знаю, почему это исключение только бросают в проекте VSIX, а не настольное приложение.

Может помочь кому-то по дороге.