2015-04-06 55 views
0

我有一個使用實體框架的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

回答

0

我必須在調用存儲過程之前重新初始化我的上下文。這就是它使用主數據庫的原因。