我创建了一个类库项目,其中包含实体框架对象,该对象将负责我的多个项目的公共数据访问层。在将生成的dll文件添加到我的域项目并使用类库项目中的实体对象之后,面对以下问题。
在应用程序配置文件中找不到名为“ABC”的连接字符串。
我已将edmx的元数据工件处理属性设置为嵌入输出程序集
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=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="ABC" connectionString="metadata=res://*/Entity.ABC.csdl|res://*/Entity.ABC.ssdl|res://*/Entity.ABC.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\ABC.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
</configuration>
实体代码如下
public ABC_IntegrationEntities()
: base("name=ABC")
{
}
我从datadirectiory“App_Data”访问数据库还有一件事
我引用了dotnetcurry.com上的博客。
http://www.dotnetcurry.com/showarticle.aspx?ID=617
提前致谢!
答案 0 :(得分:7)
根据您提供的the link,您可能会错过这一部分。
现在,您可以在此项目中创建您自己的.config文件 并添加模型的connectionstring条目或只需复制 您在MyEntityModel项目中创建的App.config文件 您的控制台应用项目。我们将采用更简单的方式。右键点击 该项目&gt; 添加现有项&gt;转到MyEntityModel项目并且 添加App.config文件。
说明:
当您创建库并从另一个项目引用库时,EF将读取与启动项目相关的配置。您可以执行以下操作之一。
答案 1 :(得分:1)
我一直致力于创建实现所有EF(实体框架)功能的类库,并遵循http://www.dotnetcurry.com/showarticle.aspx?ID=617中概述的流程,但仍然存在错误。
问题是EF框架和.Net框架之间的版本不匹配。我使用的是.Net framework 5.0,但EF版本是6.0。更新.Net框架的最新版本后,一切都开始运作良好。始终确保EF和Dll版本+ EF和测试项目版本始终相同。
我还下载并安装了EFTools6.1.3ForVS2013,如果这对任何人都有帮助的话。要记住的另一件事是你必须在引用EF Dll的所有项目中从Nuget安装Entity Framework,并从测试项目的配置文件中的Dll配置文件中复制connectionstring。
希望这有助于某人! 谢谢,
答案 2 :(得分:1)
从库项目的配置文件中复制SQL连接字符串,并将其粘贴到主项目的配置文件中,这是您的启动项目。这将解决您的问题。
另外,将DbProviderFactories从库项目复制到主项目的配置文件。
答案 3 :(得分:0)
在上下文类的构造函数中更改您正在使用的实体连接字符串的名称:
public ABC_IntegrationEntities()
: base("name=Gumu_IntegrationEntities")
{
}
确保将应用程序配置文件添加到执行代码的程序集中,即app.config
您网站web.config
的PE {/ 1}}