EF Code First执行update-database未更新指定SQL Server数据库问题
解决ASP.NET Code First连接指定数据库的配置问题
以下是需要补充/检查的关键配置项:
明确DbContext构造函数的连接字符串来源
你的DbContext子类必须在构造函数中指定读取web.config里的连接字符串名称,避免EF默认使用LocalDB。示例代码:public class MyContext : DbContext { // 这里的"MyConnectionString"要和web.config里的连接字符串name属性一致 public MyContext() : base("Name=MyConnectionString") { } // 定义你的DbSet属性 public DbSet<YourEntity> YourEntities { get; set; } }注意必须加上
Name=前缀,否则EF会把字符串当成数据库名称而非配置项名称,进而使用LocalDB实例。验证web.config的连接字符串配置
确保连接字符串的格式正确,包含正确的数据源、数据库名和提供者名称:<connectionStrings> <add name="MyConnectionString" connectionString="Data Source=MY-PC\SQL2008R2;Initial Catalog=MyDatabase;Integrated Security=True;" providerName="System.Data.SqlClient" /> </connectionStrings>providerName必须指定为System.Data.SqlClient,这是SQL Server(包括2008R2)的官方数据提供者,EF依赖它识别目标数据库类型。检查Migration配置类
打开Migrations目录下的Configuration.cs,确认它关联的是你的目标MyContext,且没有硬编码LocalDB连接:internal sealed class Configuration : DbMigrationsConfiguration<YourProjectNamespace.MyContext> { public Configuration() { AutomaticMigrationsEnabled = false; // 不要在这里手动指定其他连接,确保继承DbContext的连接配置 } protected override void Seed(YourProjectNamespace.MyContext context) { // 种子数据代码(如果有) } }可选:执行命令时显式指定连接
如果以上配置仍未解决问题,可在Package Manager Console中显式指定连接字符串名称执行更新:Update-Database -ConnectionStringName MyConnectionString -Verbose
内容的提问来源于stack exchange,提问作者RunnerRunner
相关产品推荐
相关产品推荐

