0

我試圖通過存儲過程映射到名爲ListLeagueLeaders()的方法,但自動生成的方法調用存儲過程,ObjectResult<ListLeagueLeaders_Result> ListLeagueLeaders()正期待一個ObjectResult類型。我能做些什麼來解決這個問題?傳入字典的模型項目類型爲'System.Data.Objects.ObjectResult`1

我想用LINQ代替存儲過程,但我想給這個策略最後的機會。相關閱讀:LINQ to Entities instead of stored procedure?

的HomeController

public class HomeController : Controller 
    { 

     HockeyStatsEntities db = new HockeyStatsEntities(); 

     public ActionResult Index() 
     { 
      ViewBag.Message = "League leaders"; 
      { 
       return View(db.ListLeagueLeaders()); 
      } 
     } 

     private ICollection<ListLeagueLeaders_Result> ListLeagueLeaders() 
     { 
      ICollection<ListLeagueLeaders_Result> leagueLeadersCollection = null; 

      using (HockeyStatsEntities context = new HockeyStatsEntities()) 
      { 
       foreach (ListLeagueLeaders_Result leagueLeader in 
          context.ListLeagueLeaders()) 
       { 
        leagueLeadersCollection.Add(leagueLeader); 
       } 
      } 
      return leagueLeadersCollection; 
     } 
    } 

Model1.Context.cs

public partial class HockeyStatsEntities : DbContext 
    { 

     public DbSet<Dim_Date> Dim_Date { get; set; } 
     public DbSet<Dim_Player> Dim_Player { get; set; } 
     public DbSet<Dim_Team> Dim_Team { get; set; } 
     public DbSet<Fact_Statistics> Fact_Statistics { get; set; } 
     public DbSet<Dim_Game> Dim_Game { get; set; } 

     public virtual ObjectResult<ListLeagueLeaders_Result> ListLeagueLeaders() 
     { 
      ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace.LoadFromAssembly(typeof(ListLeagueLeaders_Result).Assembly); 

      return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<ListLeagueLeaders_Result>("ListLeagueLeaders"); 
     } 
    } 

查看:

@model NHLStats2.Models.ListLeagueLeaders_Result 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

回答

1

您在視圖中出現此錯誤。您需要引用您從控制器操作中重新調用的相同對象類型。

例如,如果你是從你的控制器動作返回的List<Foo>類型,你只能讓你的觀點強類型來List<Foo>IList<Foo>IEnumerable<Foo>

+0

我已經編輯我的職務。我已經添加了這個視圖,因爲你可以看到它對於'NHLStats2.Models.ListLeagueLeaders_Result'是強類型的,不應該這樣嗎?這是問題的根源嗎?如果是這樣,你會用什麼替換它? – 2011-12-17 21:20:54

+0

用'@model ObjectResult '替換'@model NHLStats2.Models.ListLeagueLeaders_Result'。通過查看你的代碼,它應該儘可能地工作。 – tugberk 2011-12-17 21:33:14

+0

@JFB在上面看到我的評論。 – tugberk 2011-12-17 21:39:35

相關問題