为什么我的应用程序看不到实体框架模型更新

问题描述:

我有一个使用实体框架的MVC应用程序。我需要为应用程序创建一个新的存储过程。我首先在数据库中创建了存储过程,所以我知道它存在。然后在我的项目中,我从数据库更新模型,并拉入新的存储过程。然后我创建了一个复杂类型的函数导入并保存了模型。我有一个使用该模型的服务,我可以毫无问题地引用新的复杂类型。为什么我的应用程序看不到实体框架模型更新

我遇到的问题是当运行应用程序并击中这个存储过程时,我收到一个错误,指出“无法找到存储过程”。

引发错误的方法是在这里:

public virtual ObjectResult<E3_Assessment_GetPDFImages_Result> E3_Assessment_GetPDFImages(Nullable<int> assessmentID) 
    { 
     var assessmentIDParameter = assessmentID.HasValue ? 
      new ObjectParameter("assessmentID", assessmentID) : 
      new ObjectParameter("assessmentID", typeof(int)); 

     return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<E3_Assessment_GetPDFImages_Result>("E3_Assessment_GetPDFImages", assessmentIDParameter); 
    } 

是否有我需要,以确保一切都在实体框架更新任何额外的步骤?我已验证存储过程存在于数据库中。我能想到的另外一件事是模型没有看到新的存储过程。

UPDATE连接字符串

<add name="AssessmentEntities" connectionString="metadata=res://*/AssessmentModel.csdl|res://*/AssessmentModel.ssdl|res://*/AssessmentModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MyServer;initial catalog=MyDatabase;persist security info=True;user id=MyUser;password=MyPassowrd;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

UPDATE 我跑SQL Server事件探查,发现为什么我收到错误。当存储过程运行时,它将在master数据库中运行,而不是运行在实际数据库中。其他存储过程在正确的数据库中运行。

为什么它在master数据库而不是我想要的数据库中运行?

+0

请连接字符串! – ErikEJ

+0

您在存储过程中是否包含数据库名称?在'USE'标签中或作为表名的一部分? mydatabase.mytable? – jackncoke

+0

USE语句在存储过程中使用正确的数据库名称。 – RUEMACHINE

我必须在调用存储过程之前重新初始化我的上下文。这就是它使用主数据库的原因。