1

我创建了一个启动基于窗体的GUI的AddIn。 AddIn和Gui在不同的项目中。 Gui连接到一个数据库并利用EF作为ORM。Visual Studio 2010添加使用实体框架

当我从VS启动Gui项目时,它效果很好。当我将该Gui发布到vs加载项文件夹并运行它时,它工作正常。当我从VS的加载项启动Gui时,它加载正常,但任何试图击中数据库的内容都会失败。 EF抱怨元数据文件。

例外:指定的命名 连接或者未在 配置中找到,而不是旨在用于 与EntityClient提供者,或不 有效。

在System.Data.EntityClient.EntityConnection.ChangeConnectionString()

这里是的app.config配置

<connectionStrings> 
    <add name="companyEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=TESTDB;Initial Catalog=company;Persist Security Info=True;User ID=id;Password=password;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/> 
    </connectionStrings> 

我能想到的唯一的事情是,“RES: // * /“部分映射不同,当启动程序集不同时,但我尝试使用绝对路径到csdl/msl/ssdl文件没有任何成功。

从打开配置的加载项启动Gui有什么不同?

+0

更新:如果我将connectionString信息添加到devenv.exe.config文件中,那么Gui应用程序可以工作。所以问题是:配置AddIn/Gui项目的正确方法是什么,以便Gui不必知道它是如何启动的(直接或者作为AddIn) – soslo 2011-02-09 16:36:44

回答

0

不要依赖connectionString在你不能控制的配置文件中。相反,使用带连接字符串的ObjectContext重载,在新建上下文时明确传递它。

+0

我想这在技术上是可行的,但它对于在我们的大约十几个项目中使用的常见组装来说,这不是一种可行的方法。 – soslo 2011-02-11 12:53:41

相关问题