Linq to Entities - Запрос ошибок в сети, но не юнит-тесты - PullRequest
2 голосов
/ 31 октября 2010

У меня есть запрос, который выдает ошибку, когда я использую его в проекте MVC 2.0, но не когда я запускаю модульные тесты (работает нормально).Ниже приведен запрос «Пользователь» - это сущность.Я получаю сообщение об ошибке «Известные проблемы, которые нужно учитывать для EF» (http://msdn.microsoft.com/en-us/library/bb896317.aspx)), но, по-видимому, это довольно просто, это должно сработать, и я на самом деле не делаю то, что они делают. Это нацелено на фреймворк 3.5 и серверную часть SQL 2005.

Ошибка:

"Невозможно создать постоянное значение типа 'Тип закрытия'. В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid ')."

Запрос:

User user = (from u in db.Users
                where u.UserId == (Guid)providerUserKey
                && u.Application.LoweredApplicationName == this.ApplicationName.ToLower()
                select u).FirstOrDefault();

Мне удалось определить, что запрос не выполнен из-за выбора" Пользователь ". Однако тот же запрос отлично работает, когда я использую u.UserName = userNameЯ также пробовал варианты, такие как UserId.ToString () (также не поддерживается) и u.UserId.CompareTo ((Guid) providerKey)> 0. Все ошибки выбрасывания некоторого типа.

Есть идеи?

Спасибо!

1 Ответ

1 голос
/ 31 октября 2010

Из этого поста , похоже, проблема в providerUserKey, а не в u.UserId.

Попробуйте назначить providerUserKey для Guid и использовать это:

Guid id = (Guid)providerUserKey;

User user = (from u in db.Users
                where u.UserId == id
                && u.Application.LoweredApplicationName == this.ApplicationName.ToLower()
                select u).FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...