我使用实体框架和ASP。NET MVC 4构建应用程序
我的解决方案分为两个项目;
一个类库,其中包括我的数据模型(.edmx)文件和一些自定义接口 引用上面类库的“容器”MVC项目
我的问题是,当我试图使用'MyEntites' DbContext时,我得到以下错误:
中找不到名为“MyEntities”的连接字符串 应用程序配置文件。
我猜这个问题与连接字符串位于类库的app.config而不是MVC项目的事实有关。
有人有什么建议吗?
我使用实体框架和ASP。NET MVC 4构建应用程序
我的解决方案分为两个项目;
一个类库,其中包括我的数据模型(.edmx)文件和一些自定义接口 引用上面类库的“容器”MVC项目
我的问题是,当我试图使用'MyEntites' DbContext时,我得到以下错误:
中找不到名为“MyEntities”的连接字符串 应用程序配置文件。
我猜这个问题与连接字符串位于类库的app.config而不是MVC项目的事实有关。
有人有什么建议吗?
当前回答
你可以把连接字符串传递给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...
}
其他回答
如果您正在使用MVVM模型,请尝试将连接字符串复制到项目的所有部分。
例如,如果您的解决方案包含两个项目,类库项目和wpf项目,您必须复制后端项目(库类项目)的连接字符串,并将副本放在wpf项目的App.config文件中。
<connectionStrings>
<add name="DBEntities" ... />
</connectionStrings>
希望对你有帮助:)
将连接字符串复制到app.config或web。如果在数据层项目中使用实体框架,请在主项目中安装实体框架nuget。
定期迁移
有两个选项——这里每个人都建议的第一个选项是确保连接字符串在Web中。项目配置文件。当使用来自Azure应用程序设置的连接字符串时,这意味着要重写Web。配置值与Azure值。
Azure或自动迁移(编程式)
如果你以编程方式运行迁移,还有第二个选项可用,它允许你使用动态获得的连接字符串(或通过Azure应用程序设置)运行迁移,而不将其存储在Web.config中:
在设置配置的TargetDatabase时,使用DbConnectionInfo构造函数,它接受一个连接字符串和一个提供者名称,而不是只接受一个连接名称的构造函数。如果您的连接字符串没有提供商名称,并且您使用的是SQL Server / Azure SQL,则使用"System.Data.SqlClient"
Add an App.Config file Set the project as startup project. Make sure you add the connection strings after entityFramework section: <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=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> </configSections> <connectionStrings> <!-- your connection string goes here, after configSection --> </connectionString>
我通过没有将项目设置为启动来得到这一点,正如另一个答案所示。我对此的贡献-当做Add-Migrations和Update-Database时,在Nuget Package Manager Console中指定启动项目作为命令的一部分(不包括'['或']'字符,这只是为了告诉你你需要将位于那里的文本更改为你的项目名称):
Enable-Migrations Add-Migrations -StartupProject[包含数据上下文类的项目名称] Update-Database -StartupProject[与上面的项目名称相同]
这样就行了。