CLR обнаружил недопустимую программу с Entity Framework - PullRequest
2 голосов
/ 30 марта 2011

Я получаю данные из базы данных WordPress, которая определяет первичный ключ как decimal, и я использую конфигурацию x64 в проекте ...

Бит, который я искал, обнаружил, что это проблема, но я не смог найти решение.

Что мне нужно сделать / загрузить, чтобы использовать decimal в качестве первичного ключа?

Эта проблема в Microsoft Connect

Ответы [ 4 ]

1 голос
/ 15 ноября 2011

У меня была та же проблема, и я решил ее сегодня, установив эти два параметра в false в объекте DBContext:

this.ContextOptions.LazyLoadingEnabled = false;

this.ContextOptions.ProxyCreationEnabled = false;

Кажется, это проблема сериализации при создании прокси.

Сначала я попытался сопоставить свои типы с Int32 в файле EDMX, но это дало мне очень низкие показатели.

0 голосов
/ 08 октября 2012

Я столкнулся с той же проблемой, и грустно сказать: она все еще не устранена Microsoft. Я пробовал EF 4.1 и EF 5.0, но они не содержат исправления для этой проблемы.

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

Комментарий PJ (11/11/2011 в 11:46) по https://connect.microsoft.com/VisualStudio/feedback/details/620031/invalidprogramexception-using-entityframework-poco-template-table-w-decimal-primary-key не звучит многообещающе, возможно, он даже не исправлен в .NET 4.5

0 голосов
/ 30 марта 2011

Вы пробовали использовать версию Entity Framework 4.1 Candidate?Ошибка была помечена как исправленная как месяц или около того назад.

0 голосов
/ 30 марта 2011

Если вы только читаете данные из таблицы, вы можете попробовать создать представление, которое преобразует поле в int, а затем сопоставить вашу сущность с представлением.

Кроме того, я думаю, что вам в значительной степени не повезло. Это ошибка в Entity Framework; либо измените тип поля, переключитесь на EF или подождите, пока MS исправит ошибку.

...