Asp.net mvc ASP.NET MVC4+;实体框架5-SaveChanges()上的数据库名称不正确

Asp.net mvc ASP.NET MVC4+;实体框架5-SaveChanges()上的数据库名称不正确,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我有一个MVC4+EF5应用程序,在web.config中有一个connectionString,还有一个DBContext使用它 我有一个简单的创建控制器 我已在DEV中成功运行我的应用程序 我正试图转移到UAT,这涉及到新的DB,因此我更新了connectionString,在SaveChanges()上,我得到一个DBUpdate异常,如: {“无效的对象名'DBNAME.dbo.TABLENAME'。” 其中DBNAME是我的DEV数据库名称。然而,我可以看到,正在连接到正确的SQL S

我有一个MVC4+EF5应用程序,在web.config中有一个connectionString,还有一个DBContext使用它

我有一个简单的创建控制器

我已在DEV中成功运行我的应用程序

我正试图转移到UAT,这涉及到新的DB,因此我更新了connectionString,在SaveChanges()上,我得到一个DBUpdate异常,如:

{“无效的对象名'DBNAME.dbo.TABLENAME'。”

其中DBNAME是我的DEV数据库名称。然而,我可以看到,正在连接到正确的SQL Server实例。我所有的AJAX/JSON表单方法都可以很好地连接到DB。。只有当我去保存表单时,我才会遇到EF试图在正确的SQL Server上查找错误的DB的问题

如果我修改目标表的方式使其不适合我的模型,则在SaveChanges()上,我将收到异常,抱怨不匹配。。。因此,似乎只有当目标模式正确时,出于某种原因,EF才会返回到我的DEV DB名称

在哪里可以缓存旧的数据库名?现在任何地方都没有提到它。我如何“重置”这个

编辑:忘了先提到我正在使用代码,但架构已经存在。。我只是手工编写了模型类,没有使用数据库迁移。 EDIT2:我刚刚使用数据库重新编写了整个应用程序,我得到了同样的结果!!到底发生了什么事?模型或连接字符串中未提及的数据库名称从何而来?我已经清理/重建了解决方案;发布到另一个web框;已删除临时ASP.NET文件。。我完全迷路了

EDIT3例外情况:

[SqlException (0x80131904): Invalid object name 'WRONGDATABASENAME.dbo.WorkspaceRequest'.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +404
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +412
   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1363
   System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +59
   System.Data.SqlClient.SqlDataReader.get_MetaData() +118
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6384561
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +6386130
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +538
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +28
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +256
   System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +19
   System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues) +270
   System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter) +536

[UpdateException: An error occurred while updating the entries. See the inner exception for details.]
   System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter) +11194398
   System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options) +833
   System.Data.Entity.Internal.InternalContext.SaveChanges() +218

[DbUpdateException: An error occurred while updating the entries. See the inner exception for details.]
   System.Data.Entity.Internal.InternalContext.SaveChanges() +291

(很抱歉用了懒散的措词——我一直都在这样做,我感到厌倦和沮丧)

在整个解决方案中搜索'ErrorDatabaseName.dbo.WorkspaceRequest'

您应该能够在edmx文件的XML视图中看到它


另外,尝试从edmx中删除所有项目并再次更新?

我发现了问题。结果表明EF使用ODBC异常,并且我在生成异常的目标表上有一个无效触发器(指向旧的DB名称),该异常冒泡到调试器。

数据库名称来自连接字符串。如何将连接字符串传递到上下文?我在web.config中有一个与我的DBContext匹配的connectionString名称,但我也尝试在DBContext构造函数中硬编码连接字符串。连接字符串指定正确的数据库名称谢谢。我试过了。该名称不会出现在源代码中的任何位置。我构建了一个全新的EDMX(以前没有——只有.cs模型类)。还是一样的问题