2014-01-17 83 views
0

我是MVC 3和LIN到SQL的新手,我想通過DataContext從數據庫調用存儲過程'GetAttendance_Sp',我成功地做到了,但現在問題在視圖中,它拋出錯誤:存儲過程不使用Linq to SQL,在視圖

Exception Details: System.InvalidCastException: Unable to cast object of type 'EmployeeAttendance_app.Models.GetAttendance_SpResult' to type 'EmployeeAttendance_app.Models.EmployeeAtd'. 

Source Error: 


Line 10: 
Line 11: <ul> 
Line 12: @foreach (EmployeeAttendance_app.Models.EmployeeAtd emp in (IEnumerable<Object>)ViewData.Model) 
Line 13: { 
Line 14:  <li>@emp.EmplName</li> 

代碼:

using EmployeeAttendance_app.Models; 
namespace EmployeeAttendance_app.Controllers 
{ 
    public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      ViewBag.Message = "Employee Attendance"; 
      var DataContext = new EmployeeAtdDataContext(); 
      var EmployeeAtd = DataContext.GetAttendance_Sp; 
      return View(EmployeeAtd); 
     } 

     public ActionResult About() 
     { 
      return View(); 
     } 
    } 
} 

查看:

@foreach (EmployeeAttendance_app.Models.EmployeeAtd emp in (IEnumerable<Object>)ViewData.Model) 
{ 
    <li>@emp.EmplName</li> 
} 
</ul> 

前夕ñ雖然我做了同樣的核心選擇查詢和工作正常,但不是爲SP,爲什麼?

解釋爲什麼視圖不適用於SP,但對於簡單選擇查詢,儘管兩者都返回相同的結果集?

+0

幫助將不勝感激 – James

+2

顯然你的sproc返回'GetAttendance_SpResult',你有一個'EmployeeAtd'作爲視圖模型。 –

+0

什麼輸出是由sp給出的,顯示一些sp代碼 –

回答

0

它已經有一段時間,我使用LINQ到SQL的工作,但一個快速刷新後,我發現,你可以改變一個存儲過程的結果類型的DBML設計師,就像這樣:

enter image description here

當然,在你的情況下,你應該選擇類型EmployeeAtd

相關問題