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