Проблема с Entity Framework после добавления столбца в таблицу БД - PullRequest
3 голосов
/ 04 августа 2009

Мне нужно было добавить новый столбец NVARCHAR в таблицу в моей БД. Поэтому я добавил столбец, а затем запустил Visual Studio, чтобы обновить EDMX-файл для Entity Framework.

Я запустил обновление модели из базы данных на все, что привело только к ошибкам «считыватель данных несовместим». Поэтому я переименовал всю таблицу в БД, обновил EDMX из базы данных, переименовал таблицу обратно в исходное имя, снова запустил обновление, а затем создал новый импорт функций для всех задействованных хранимых процедур. Но я все еще получаю ту же ошибку:

Считыватель данных несовместим с указанное «[Модель]. [Сущность]». член типа, '[Колонка]', не имеет соответствующий столбец в данных читатель с тем же именем.

Я немного осмотрелся, и это, кажется, распространенная ошибка, если имя столбца отличается в базе данных и структуре. Это, однако, не тот случай, они имеют одинаковое имя.

Я могу получить доступ к столбцу в коде через [Entity] .Context. [Column], так что я не совсем понимаю, на что жалуется читатель данных.

У меня закончились идеи, поэтому любая помощь приветствуется.

Ответы [ 6 ]

2 голосов
/ 04 августа 2009

Обновление модели заменяет схему хранилища, но не схему клиента или сопоставление. Чтобы начать с «чистого листа», создайте резервную копию текущего EDMX , а затем откройте его как XML. Удалите все ссылки на таблицу, затем закройте и откройте графическую ошибку. Построить. Если у вас есть какие-либо ошибки (возможно, неработающие ссылки на удаленную таблицу), исправьте их. Затем обновите модель, чтобы заново добавить таблицу.

1 голос
/ 13 февраля 2012

Просто были те же проблемы, что и выше. Попытался удалить сущность из edmx, попытался удалить и повторно добавить функцию импорта, и, наконец, перестроить, используя сложный тип в функции импорта, но это тоже не сработало.

Я понимаю, что эта ошибка может возникать для любого сценария, где есть несоответствие, но мы обнаружили, что проблема была в сохраненном процессе, который мы использовали для импорта функции. Хранимая процедура использовала определенное имя столбца выбора, имя столбца и т. Д., А новый столбец, который мы добавили в таблицу, отсутствовал в этом списке. Для тестирования мы использовали *, обновили EDMX, и это решило нашу проблему.

0 голосов
/ 27 января 2018

Если вы повторно добавите DataModel, вы потеряете все привязки данных, особенно привязки элементов управления в вашей форме (например, DbGrid). Я исправил эту проблему, вручную редактируя файл DataModel.edmx во внешнем редакторе.

0 голосов
/ 18 октября 2016

Если это не просто добавление нового элемента, это выдает ошибку примерно каждый раз, когда я пытаюсь "Обновить модель из базы данных" ...

Решение, к счастью, очень простое -

1) Open Web.config, find <connectionStrings> node 
2) Delete the DBNameEntities <connectionStrings>  
     - this way you do not have to modify any references to your emdx model
2) Delete the ADO.NET Entity Data Model (.emdx) 
3) Re-add the ADO.NET Entity Data Model (.emdx) with the same name.

Это быстрее и пуленепробиваемый. (пока!?)

0 голосов
/ 08 июня 2011

Для меня это была проблема, когда я изменил сущность (вертикальное разбиение сущности), но одна из моих хранимых процедур не извлекала данные для этого нового поля. Я его добавил (в SP) и теперь все работает нормально.

0 голосов
/ 11 августа 2009

Оказывается, с EDMX все было в порядке, но дизайнер по какой-то странной причине прекратил обновление файла Designer.cs в моем проекте.

Пришлось войти и вручную отредактировать его.

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