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

相关问题