ASP.NET просмотреть исключение - PullRequest
0 голосов
/ 01 сентября 2010
     Function Edit(ByVal id As Integer) As ActionResult


        Dim entities As New Deployment_devEntities()
        Dim w As System.Data.Objects.ObjectQuery(Of tblWebsites) = entities.CreateQuery(Of tblWebsites)("SELECT VALUE m FROM tblWebsites as m WHERE m.WebsiteID = " & id)

        Dim q = From m In entities.tblWebsites Where m.WebsiteID = id Select m

        Return View(q.Single())

    End Function

У меня строго типизированное представление типа EntityFrameworkTest.tblWebsites, когда я передаю результаты, используя Linq to Entity или Entity SQL, я получаю эту ошибку:

The model item passed into the dictionary is of type 'System.Data.Objects.ObjectQuery`1[EntityFrameworkTest.tblWebsites]', 
but this dictionary requires a model item of type 'EntityFrameworkTest.tblWebsites'.

Что я делаю не так?

Код только для примера.

Ответы [ 4 ]

1 голос
/ 01 сентября 2010

Либо ваше представление должно наследоваться от IEnumerable<tblWebsites>, либо вам нужно изменить контроллер, чтобы он возвращал один экземпляр tblWebsites.Вы можете сделать это с помощью метода LINQ .FirstOrDefault().

1 голос
/ 01 сентября 2010

Обычно я не делаю VB, если я могу избежать этого, мне кажется, что ваш код выводит тип (и предполагает, что это объектный запрос)Попробуйте позвонить .Single (из tblWebsites), а не просто Single ().Или кастинг.

0 голосов
/ 01 сентября 2010

Проблема оказалась в том, что .Single () не поддерживается LINQ to Entities.Использование .FirstOrDefault () или .First () работало нормально.

Спасибо всем.

0 голосов
/ 01 сентября 2010

Ваше действие возвращает список, но ваше представление ожидает 1 объект. Выясните, какой из них неправильный, и исправьте его.

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