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>
に型付けすることができます。ビューを追加しました。NHLStats2.Models.ListLeagueLeaders_Resultに厳密にタイプされていますが、そうではありませんか?それは問題の根源ですか?もしそうなら、あなたはこれを何と置き換えるのですか? –
'@model NHLStats2.Models.ListLeagueLeaders_Result'を' @model ObjectResult 'に置き換えてください。あなたのコードを見れば分かるはずです。 –
tugberk
@JFB上記の私のコメントを参照してください。 – tugberk