我刚刚在我的应用程序中添加了一个WPF项目,当我尝试使用我的DataAcccess类与Entity DB进行交互时,我收到错误:
类型' System.InvalidOperationException'的例外情况发生在 mscorlib.dll但未在用户代码中处理
其他信息:实体框架提供程序类型 ' System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer'在应用程序配置文件中注册 对于具有不变名称的System.Data.SqlClient'的ADO.NET提供程序 无法加载
这个错误才开始发生,因为我添加了这个项目,我无法弄明白。我将App.Config复制到了新项目,现在是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
当我尝试构建一个对象列表时,我的一个类中发生了错误
使用(var context = new DataAccess())
namespace MarketAnalyser.LogicLayer
{
public class Instrument
{
public int ID { get; set; }
public string Name { get; set; }
public string Expiry { get; set; }
public double TickSize { get; set; }
public double TickValue { get; set; }
public double OpenTime { get; set; }
public double CloseTime { get; set; }
public Instrument(string name, string expiry, double tickSize, double tickValue, double openTime, double closeTime)
{
this.Name = name;
this.Expiry = expiry;
this.TickSize = tickSize;
this.TickValue = TickValue;
this.OpenTime = openTime;
this.CloseTime = closeTime;
}
public static List<Instrument> GetAllInstruments()
{
List<Instrument> InstrumentList = new List<Instrument>();
using (var context = new DataAccess())
{
foreach (var instrument in context.Instrument)
{
InstrumentList.Add(instrument);
}
}
return InstrumentList;
}
}
}
答案 0 :(得分:1)
您能否仔细检查包含ADO.NET提供程序(System.Data.Entity.SqlServer.SqlProviderServices)的程序集(EntityFramework.SqlServer)是否已部署到输出文件夹(bin \ debug) 看起来装配解析机制无法找到它 要查看有关装配分辨率错误的更多详细信息,您可以使用Fuslogvw
默认情况下,当您安装最新版本的&#39; EntityFramework 6.1.3&#39;作为NuGet包,您可以从项目中获取两个程序集
仔细检查您是否有这些引用(并且它们将copyLocal属性设置为true),如果没有 - 重新安装包
答案 1 :(得分:0)
尝试在connectionString
</configSections>
<connectionStrings>
<add name="Your_EntityName" connectionString="Data Source=your_server_name;Initial Catalog=Your_database_name;Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>