我有一个使用Entity Framework的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);
}
我是否需要采取任何其他步骤来确保在实体框架中更新所有内容?我已经验证了数据库中存在的存储过程。我唯一能想到的是模型没有看到新的存储过程。
更新连接字符串
<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" />
更新 我运行sql server profiler,发现为什么我收到错误。当存储过程运行时,它在master数据库中运行,而不是它应运行的实际数据库。其他存储过程在正确的数据库中运行。
为什么它在master数据库而不是我想要的数据库中运行?
答案 0 :(得分:0)
在调用存储过程之前,我必须重新初始化我的上下文。这就是它使用master数据库的原因。