我使用实体框架和ASP。NET MVC 4构建应用程序

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

一个类库,其中包括我的数据模型(.edmx)文件和一些自定义接口 引用上面类库的“容器”MVC项目

我的问题是,当我试图使用'MyEntites' DbContext时,我得到以下错误:

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

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

有人有什么建议吗?


当前回答

我通过没有将项目设置为启动来得到这一点,正如另一个答案所示。我对此的贡献-当做Add-Migrations和Update-Database时,在Nuget Package Manager Console中指定启动项目作为命令的一部分(不包括'['或']'字符,这只是为了告诉你你需要将位于那里的文本更改为你的项目名称):

Enable-Migrations Add-Migrations -StartupProject[包含数据上下文类的项目名称] Update-Database -StartupProject[与上面的项目名称相同]

这样就行了。

其他回答

我有这个问题时,我使用多个项目,启动项目与web。EntityFramework项目的config和app.config。

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

您需要连接字符串在开始*。配置文件。 您需要将EntityFramework DLL安装到引用中

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

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

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

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

您的解决方案中是否使用了多个项目?

因为如果你是,你必须检查的web配置是与de .edmx文件在同一个项目中的配置

我刚刚发现的解决这个问题的最好方法是临时将该项目(很可能是一个类库)设置为启动项目。这将强制包管理器控制台使用该项目作为它的配置源。这样设置的部分原因是配置文件通常遵循的自顶向下模型。经验法则是,最接近客户端的项目(例如MVC应用程序)是web。将使用的Config或app.config。

将连接字符串复制到app.config或web。如果在数据层项目中使用实体框架,请在主项目中安装实体框架nuget。