Попытка сравнить LINQ-to-Entity к дате приводит к ошибке - PullRequest
0 голосов
/ 14 марта 2011

У меня есть простое If..Then, вот так:

  If rhcexists.First.SignatureDate > Date.Today.AddMonths(-6) Then
  End If

rhcexists - это простой запрос к модели сущности:

Dim rhcexists = From p In dbContracts.Signatures _
                    Where p.StudentID = CStr(Session("people_code_id")) _
                    And p.ContractType = "rhc" _
                    Order By p.ID Descending _
                    Select p

Проблема заключается в том, что это сравнение приводит кошибка:

LINQ to Entities не распознает метод метода System.Object get_Item (System.String), и этот метод нельзя преобразовать в выражение хранилища.

Это происходит в предложении If.Любые идеи, почему это происходит и как я могу это исправить?

Я использую ASP.NET 4, EF 4 и VS 2010 SP1.

1 Ответ

2 голосов
/ 14 марта 2011

Проблема в вашем запросе.Исключение выдается в вашем операторе if, потому что выполнение запроса откладывается до тех пор, пока его не нужно будет выполнить.Проблема в

Session("people_code_id")

Все, что в запросе LINQ, должно быть переведено в SQL для выполнения запроса.Entity Framework не может преобразовать метод получения элемента сеанса в SQL, поэтому он генерирует исключение.Попробуйте выдвинуть это в переменную перед запросом, например так:

Dim peopleCodeId = CStr(Session("people_code_id"))
Dim rhcexists = From p In dbContracts.Signatures _
                    Where p.StudentID = peopleCodeId _
                    And p.ContractType = "rhc" _
                    Order By p.ID Descending _
                    Select p

(Мой VB.NET немного заржавел, но я думаю, что это правильно)

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