Это связано с тем, как EF4 работает с моделью сначала.
Когда вы впервые создаете модель «сначала модель», она находится в состоянии, когда SSDL не существует. Вы можете перетаскивать сущности, связывать их и так далее, и все же, если вы посмотрите на SSDL в файле EDMX, вы увидите, что ни один из объектов не имеет связанной таблицы хранения в SSDL.
Это меняется, когда вы щелкаете Generate Database From Model
элемент контекстного меню. Запутывает то, что это действие делает больше, чем просто генерирует сценарий DDL. Фактически, он изменяет файл EDMX для включения информации SSDL. С этого момента файл EDMX перейдет в состояние, в котором каждая сущность в конструкторе / CSDL должна отображаться на сущность в SSDL. Если не сопоставить, это вызовет ошибку времени компиляции:
Для следующего набора EntitySet / AssociationSet - (EntityName) сопоставление не указано
Еще один интересный факт: это не та ошибка, которая помешает компиляции. Он действительно сгенерирует библиотеку выходных классов. Разве это не должно быть предупреждение или что-то в этом роде?
Чтобы предотвратить эту ошибку, все, что вам нужно сделать после вставки нового объекта, - это Generate Database From Model
снова. Это обновит SSDL и исправит сопоставления.
РЕДАКТИРОВАТЬ
Если вы не используете модель сначала и вы «обновляете из базы данных», у вас также будет эта ошибка в случае удаления таблицы на сервере БД. Это связано с тем, что Entity Framework не удаляет объект автоматически. Удалите объект вручную, и ошибка исчезнет.