Я использую Entity Framework для доступа к моей базе данных, и я просто понял, что сопоставление хранимых процедур с методами, использующими сущность, является слишком сложным и, вероятно, не очень подходит для того, чтобы делать то, что я хочу получить. Я новичок в LINQ, и мне интересно, лучше ли мне с ADO.NET. Вот SQL-код мне нужно перевести:LINQ to Entities вместо хранимой процедуры?
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
При отображении Entities для хранимых процедур, у меня был этот код написан:
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]', , но для этого словаря требуется модель ite m типа 'NHLStats2.Models.ListLeagueLeaders_Result'.
Но я понимаю, что это немного боль в? & * @ ... Как я могу переустановить это, используя другой, более эффективный метод? Спасибо за вашу помощь, это очень ценится.