0

這裏是我的解決方案架構:添加在Visual Studio擴展實體框架配置

  • VM(IIb類)=>引用的SQLite。
  • 應用程序(WPF桌面應用程序)=>引用虛擬機。
  • VSIX(Visual Studio擴展)=>引用VM。

我已將VM項目的app.config的EF提供程序相關內容複製到桌面應用程序和VSIX項目。桌面應用程序工作正常,而VSIX項目拋出以下異常:

未找到具有不變名稱「System.Data.SQLite.EF6」的ADO.NET提供程序的實體框架提供程序。確保提供程序在應用程序配置文件的'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項目,而不是桌面應用程序。

可能幫助某人在路上。