Элемент модели, передаваемый в словарь, имеет тип 'System.Data.Objects.ObjectResult`1. - PullRequest
0 голосов
/ 18 декабря 2011

Я пытаюсь передать хранимую процедуру, сопоставленную с методом с именем ListLeagueLeaders(), но автоматически сгенерированный метод для вызова хранимой процедуры ObjectResult<ListLeagueLeaders_Result> ListLeagueLeaders() ожидает тип ObjectResult. Что я могу сделать, чтобы это исправить?

Я думал об использовании LINQ вместо хранимой процедуры, но я хочу дать этой тактике последний шанс. Связано: LINQ для сущностей вместо хранимой процедуры?

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 Ответ

1 голос
/ 18 декабря 2011

Вы получаете эту ошибку на вашем View. Вам нужно ссылаться на тот же тип объекта, который вы перенастраиваете из действия вашего контроллера.

Например, если вы возвращаете тип List<Foo> из действия вашего контроллера, вы можете сделать ваш взгляд строго типизированным как List<Foo> или IList<Foo> или IEnumerable<Foo> и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...