Entity Framework 4 ошибка отображения фрагмента при добавлении нового скалярного объекта



У меня есть модель Entity Framework 4-Первый дизайн. Я создаю первый проект моей модели в дизайнере и все было хорошо. Я скомпилировал, создается база данных и т. д.



позже я попытался добавить строковый скаляр (Nullable = true) к одному из моих существующих объектов, и я продолжаю получать этот тип ошибки при компиляции:




ошибка 3004: проблема в отображении
фрагменты, начинающиеся в строке 569: нет
сопоставление указанных свойств
Моя любовь.Моя ценность в наборе MyEntities. Один
Сущность с ключом (PK) не будет
туда и обратно, когда: сущность является типом
[Мои друзья.MyEntity]




Я продолжаю вручную открывать файл EDMX и исправлять XML всякий раз, когда я добавляю скаляры.



идеи о том, что происходит?

560   8  

8 ответов:

с тех пор обнаружили, что после добавления/изменения/удаления свойств на моих сущностях я должен "генерировать базу данных из модели" перед компиляцией в противном случае я получаю 3004 ошибки отображения.

Я просто удалил оскорбительные таблицы из модели, а затем добавил их обратно, и все было хорошо.

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

решение для меня состояло в том, чтобы щелкнуть правой кнопкой мыши по рабочей области и выбрать "обновить модель из базы данных". Это должно добавить свойства из БД в вашу модель, однако она не удаляет ваши старые свойства, и они дадут вам Ошибка 3004.

щелкните правой кнопкой мыши на рабочей области и выбрать пункт "Проверить". Это должно дать вам список ошибок, показывающий оскорбительные свойства. Затем можно щелкнуть правой кнопкой мыши каждое нарушающее свойство и удалить его вручную из модели.

это исправило проблему для меня. Надеюсь, это поможет кому-то еще.

Если вы хотите изменить свою базу данных без регенерации всей модели или воссоздания базы данных из модели, я считаю, что проще и безопаснее всего изменить свойства на диаграмме EDMX через Visual Studio, а затем вручную настроить сопоставления, к которым visual studio не дает доступа.

ошибка даст вам номер строки:

проблема в отображении фрагментов, начиная с строки 569

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

<EntityTypeMapping TypeName="YourModel.YourType">
  <MappingFragment StoreEntitySet="YourType">
    <ScalarProperty Name="PropertyName1" ColumnName="DatabaseColumn1" />
    <ScalarProperty Name="PropertyName2" ColumnName="DatabaseColumn2" />
    ...
  </MappingFragment>
</EntityTypeMapping>

просто убедитесь, что есть узел для каждого свойства/имя столбца вам нужно, и что все свойства, Кроме перечисленных в <EntityType Name="YourTable"> раздел в верхней части документа edmx

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

Как создать сложный тип модели:

  1. вручную изменить имя Сущность сгенерированный класс вы имея проблемы с именем нет уже в edmx-файле.
  2. выберите Окно обозревателя моделей и щелкните правой кнопкой мыши/добавить новый сложный тип.
  3. Копировать/Вставить свойства из оригинальная модель к сложному типу.
  4. сопоставьте хранимые процедуры с сложный тип.

    Я надеюсь, что это кому-то поможет.

еще одна альтернатива сделать это без удаления таблицы из диаграммы и повторного добавления его, с помощью опции отображения таблицы.

  1. перейти к модели браузера
  2. Правой Кнопкой Мыши на имени таблицы.
  3. выберите tablle mapping
  4. Visual Studio покажет окно с свойствами EF, соответствующими / отсутствующими столбцами таблицы.
  5. выберите / сопоставьте соответствующий столбец с отсутствующим свойством

enter image description here

Я получил ту же проблему после переименования свойства на одном из моих объектов.

Я обнаружил, что сопоставление между свойством моей сущности и соответствующим столбцом в таблице не было установлено.

вы можете установить это с помощью редактора, щелкнув правой кнопкой мыши на объекте в модели и выбрав "сопоставление таблиц". Убедитесь, что свойства сопоставлены со столбцом в базе данных.

Edit: мне также нужно было повторно запустить мой TT-файл для создания нового занятия. (Может быть так как у меня в другом проекте?)

после просмотра xml-файла (edmx), переместить модель в другой проект и понять, что все в порядке, я решил закрыть и открыть Visual Studio и complile againt, а затем ошибка исчезает.

Comments

    Ничего не найдено.