Ошибка EF4.1 на одной машине, а не на другой - PullRequest
0 голосов
/ 21 апреля 2011

Я получаю эту ошибку на одном компьютере, но не на другом. Оба подключаются к локальной базе данных SQLExpress 2008 R2, которая идентична на обеих машинах. Обе машины имеют VS2010 SP1 и EF4.1 (включены в обновление инструментов). Это проект веб-приложения MVC3, работающий в Cassini:

[NotSupportedException: невозможно создать постоянное значение типа 'System.Collections.Generic.IEnumerable`1'. В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid).]

Я не могу на всю жизнь понять, почему это так - это происходит на Attach() ниже:

IQueryable<Tag> tags = db.Tags.Where(x => !tagIds.Contains(x.Id) && x.Questions.Any(y => y.Id == question.Id));
question.Tags.Attach(tags);

Единственное, о чем я могу думать, это то, что одна машина 32-битная, а другая 64, но я не знаю, как определить, является ли это проблемой по какой-либо причине.

Есть идеи?

ТИА

Ответы [ 2 ]

0 голосов
/ 25 апреля 2011

Данные в двух локальных базах данных не совпадали, что означало, что tagIds возвращал ноль на одном компьютере, а не на другом. Сообщение об ошибке не очень полезно, но именно это вызвало его.

Использование Contains в этом сценарии хорошо в EF4.

0 голосов
/ 21 апреля 2011

Корень проблемы будет x => !tagIds.Contains(x.Id), так как «Содержит» не может быть переведен в T-SQL EF.Попробуйте поискать исключение для получения дополнительной информации.

...