entity framework,DLL,Excel

我已经在Excel中使用C#写的DLL(该DLL是COM注册)。 我没有问题连接Excel。 DLL使用entity framework5从SQL Server数据库检索数据。如果我通过控制台应用程序运行DLL,该DLL工作正常。 但是,当我通过Excel(通过VBA)运行它,我得到一个InvalidOperationException。 错误消息是“应用程序configuration文件中找不到名为”MegaDailyEntities“的连接string。 这是我第一次尝试从数据库中检索数据。

我遇到了控制台应用程序的这个问题,但后来我在我的App.config文件中包含以下内容

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="v11.0" /> </parameters> </defaultConnectionFactory> </entityFramework> <connectionStrings> <add name="MegaDailyEntities" connectionString="metadata=res://*/MegaDaily.csdl|res://*/MegaDaily.ssdl|res://*/MegaDaily.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=CQI-Laptop1;initial catalog=MegaDaily;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> </connectionStrings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration> 

它工作正常。

所以我的问题是,我如何让Excel使用此连接? 有没有Excel的configuration文件?

谢谢

未find连接string的原因是.config文件仅适用于应用程序(.exe),而不适用于其他库(.dll)

Excel进程尝试从Excel.exe.config加载连接string,而不是从yourlibrary.dll.config加载

为此工作的解决scheme是编辑你的* .context.tt文件(EntityFramework类生成器)和更新为您DbContext的构造函数。 你会发现像这样的东西:

 public <#=code.Escape(container)#>() : base("name=<#=container.Name#>") { ... } 

应该可以把它改成

 public <#=code.Escape(container)#>() : base("your EF connection string") { ... } 

或者看看如何从代码设置连接string