为什么我的应用程序看不到实体框架模型更新
问题描述:
我有一个使用实体框架的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="data source=MyServer;initial catalog=MyDatabase;persist security info=True;user id=MyUser;password=MyPassowrd;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
UPDATE 我跑SQL Server事件探查,发现为什么我收到错误。当存储过程运行时,它将在master数据库中运行,而不是运行在实际数据库中。其他存储过程在正确的数据库中运行。
为什么它在master数据库而不是我想要的数据库中运行?
答
我必须在调用存储过程之前重新初始化我的上下文。这就是它使用主数据库的原因。
请连接字符串! – ErikEJ
您在存储过程中是否包含数据库名称?在'USE'标签中或作为表名的一部分? mydatabase.mytable? – jackncoke
USE语句在存储过程中使用正确的数据库名称。 – RUEMACHINE