如何在类库项目中配置实体框架

时间:2014-08-20 13:21:17

标签: c# asp.net-mvc entity-framework wcf service

我创建了一个类库项目,其中包含实体框架对象,该对象将负责我的多个项目的公共数据访问层。在将生成的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=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\ABC.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 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

提前致谢!

4 个答案:

答案 0 :(得分:7)

根据您提供的the link,您可能会错过这一部分。

  

现在,您可以在此项目中创建您自己的.config文件   并添加模型的connectionstring条目或只需复制   您在MyEntityModel项目中创建的App.config文件   您的控制台应用项目。我们将采用更简单的方式。右键点击   该项目&gt; 添加现有项&gt;转到MyEntityModel项目并且   添加App.config文件。

说明:

当您创建库并从另一个项目引用库时,EF将读取与启动项目相关的配置。您可以执行以下操作之一。

  • 从库的配置中复制配置(复制文件并将其粘贴到启动项目中)
  • 创建新配置但复制连接字符串信息和其他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}}