То, что вы объявляете как IEnumerable<T>
, не меняет тип время выполнения .Поэтому, когда вы передадите его своему представлению, представление будет знать во время компиляции , что оно IEnumerable<T>
, но при наведении на него курсора во время отладки вы увидите фактический тип.(Непонятно, в какой момент вы зависали над Comment
в представлении бритвы, но я сильно подозреваю это в середине сеанса отладки.)
Если вы хотите взятькопию данных, чтобы вы могли распоряжаться контекстом, просто позвоните ToList()
и верните результат - вместо этого будет List<T>
.
Обратите внимание, что эта разница времени компиляции / времени исполнения имеетничего общего с LINQ или MVC не имеет.Вы можете увидеть то же самое очень легко без каких-либо сложностей:
object value = "hello";
время компиляции тип value
- object
, что остановит ваш вызов Substring
и т. Д.в теме.Но если вы наведите курсор мыши на value
в сеансе отладки (или посмотрите на него в окне Watch или Local), вы увидите, что тип времени выполнения по-прежнему равен string
.
EDIT: из вашегоedit:
Я звоню .ToList (), чтобы получить IEnumerable из IQueryable при выборе данных!
Я бы очень хотел увидеть этот код, потому что я нене думаю, что вы просто используете что-то вроде:
return query.ToList();
Если вы возвращаете результат вызова ToList()
, то не будет быть EntitySet
.