【发布时间】:2012-03-23 04:53:14
【问题描述】:
我正在使用实体框架来访问我的数据库,我只是发现使用实体将存储过程映射到方法有点过于复杂,并且可能不太适合做我想要的事情。我是 LINQ 的新手,我想知道仅使用 ADO.NET 是否会更好。这是我需要翻译的SQL代码:
SELECT p.Player_id, p.Name, p.Position, SUM(s.Goals) AS goalsb, SUM(s.Assists) AS assistsb, SUM(s.Points) AS pointsb
FROM Dim_Player AS p INNER JOIN Fact_Statistics AS s ON s.Player_id = p.Player_id
GROUP BY p.Player_id, p.Name, p.Position
ORDER BY pointsb DESC, goalsb DESC
使用存储过程的实体映射,我编写了以下代码:
HockeyStatsEntities db = new HockeyStatsEntities();
public ActionResult Index()
{
ViewBag.Message = "League leaders";
{
return View(db.ListLeagueLeaders());
}
}
public ActionResult About()
{
return View();
}
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;
}
这是我得到的错误:
传入字典的模型项是类型 'System.Data.Objects.ObjectResult`1[NHLStats2.Models.ListLeagueLeaders_Result]', 但是这本字典需要一个类型的模型项 'NHLStats2.Models.ListLeagueLeaders_Result'。
但我意识到这对 ?&*@... 来说有点痛苦,我该如何使用不同的、更有效的方法重新安排呢?感谢您的帮助,非常感谢。
【问题讨论】:
标签: c# linq entity-framework stored-procedures entity-framework-4