Я использую Entity Framework для доступа к своей базе данных, и я только что выяснил, что отображение хранимых процедур на методы, использующие сущность, является слишком сложным и, вероятно, не совсем подходящим для выполнения того, что я хочу точно. Я новичок в 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'.
Но я понимаю, что это немного мучительно? & * @ ... Как я мог бы перестроить это, используя другой, более эффективный метод? Спасибо за вашу помощь, это очень ценится.