[C#] 在应用程序配置文件中找不到名为'MyEntities'的连接字符串



Answers

你是对的,这是因为类库(其中.edmx文件)不是你的启动/主项目。

您需要将连接字符串复制到主项目配置文件。

如果你的启动/主项目没有配置文件(就像它在我的控制台应用程序中),只需添加一个(启动项目 - 添加新项目 - >应用程序配置文件)。

更多相关信息可以在这里找到: MetadataException:无法加载指定的元数据资源

Question

我正在使用实体框架和ASP.NET MVC 4来构建应用程序

我的解决方案分为两个项目。

  • 包含我的数据模型(.edmx)文件和一些自定义接口的类库
  • 引用上面的类库的'容器'MVC项目

我的问题是,当我尝试使用'MyEntites'DbContext时,出现以下错误:

在应用程序配置文件中找不到名为'MyEntities'的连接字符串。

我想这个问题与连接字符串位于类库的app.config而不是MVC项目的事实有关。

有没有人有什么建议?




当我使用多个proyects时,我遇到了这个问题,这个问题是使用web.config和app.config为EntityFramework项目启动的。

为了避免这个问题,你必须:

  1. 您需要启动的* .config文件中的连接字符串。
  2. 您需要将EntityFramework DLL安装到您的参考中



确保您已将连接字符串放入启动项目的ROOT web.config中。

我知道我有点在这里明显,但它也发生在我身上 - 虽然我已经在我的MVC项目的Web.Config中存在连接字符串(.edmx文件被放置在不同的类库项目中),并且我不能不知道为什么我总是得到一个异常......长话短说,我错误地将连接字符串复制到了Views \ Web.Config,这是一种疲倦和不滚动到底的奇怪组合解决方案资源管理器场景。 是的,这些事情发生在经验丰富的开发人员身上:)




你可以将连接字符串传递给EntityFramework并继续使用你的生活:

public partial class UtilityContext : DbContext
{
    static UtilityContext()
    {
        Database.SetInitializer<UtilityContext>(null);
    }

    public UtilityContext()
        : base("Data Source=SERVER;Initial Catalog=DATABASE;Persist Security Info=True;User ID=USERNAME;Password=PASSWORD;MultipleActiveResultSets=True")
    {
    }

    // DbSet, OnModelCreating, etc...
}



由包含.edmx文件的项目生成的连接字符串会生成连接字符串,这似乎是从app.config文件中保留下来的,这些文件被复制到输出目录并被可执行文件引用以存储运行时配置信息。

由于没有自动过程将随机.config信息添加到web项目的web.config文件中,所以这在Web项目中断了。

最简单的方法是将连接字符串从配置文件复制到web.config文件的连接部分,并忽略配置文件的内容。




运行MSTest时遇到此问题。 如果没有“noisolation”标志,我无法让它工作。

希望这有助于某人。 花费我很多时间来弄清楚。 一切从IDE运行良好。 在这种情况下,实体框架有点奇怪。




如果解决方案中有多个项目,那么将setUp项目设置为已启动的位置,在App.config中有您的真相。




将ConnectionString添加到MVC Project Web.config文件




如果启动项目更改没有 连接字符串的项目,也会发生这种情况。

  1. 右键单击解决方案 - 单击属性
  2. 在Common Properties下,选择启动项目
  3. 在右侧窗格中选择具有连接字符串的项目(大多数情况下,它将是MVC项目 - 启动解决方案的项目)



在web.config文件中添加Connectoinstrnig

<ConnectionStiring> <add name="dbName" Connectionstring=" include provider name too"  ></ConnectionStiring>



你在解决方案上使用多个项目吗?

因为如果你是这样,你必须检查的web配置是与de .edmx文件相同的项目




Links