У меня только что была похожая проблема (поиск исключения привел меня сюда), с MVC3, который для меня оказался потому, что я переместил свой файл edmx, и он запутался, где атрибут namespace атрибут EdmEntityTypeAttribute должен указывать.
Я создаю структуру, похожую на ту, которую вы описали, в результате чего у меня был класс модели, производный от типа сущности, и снова я получил ту же ошибку. Если я скопирую EdmEntityTypeAttribute из типа сущности в производный класс, то проблема исчезнет (по крайней мере, при записи у вас возникнет другая проблема при чтении). Это наводит меня на мысль, что фреймворк, вероятно, использует отражение для опроса класса, переданного в метод add, для определения присутствующих атрибутов, но только для фактического типа (дерево наследования игнорируется).
Я думал об этом, и это действительно имеет смысл, если вы думаете о данных, возвращающихся из базы данных. Если бы вы должны были получить список объектов «Person», фреймворк должен был бы решить, какой класс создать и заполнить из таблицы, и он не знает о вашем производном классе Model, поэтому он должен будет создать базовый класс. , В лучшем случае это будет означать, что вы взаимодействуете с хранилищем, используя необработанные типы сущностей для чтения и типы моделей для записи, что может показаться запутанным.
Использование частичных классов в сгенерированных типах сущностей позволяет вам расширять их, если вам нужно, или если вы хотите явно разделить типы сущностей и моделей, тогда может потребоваться какое-то отображение объектов.
Конечно, я все еще знакомлюсь со структурой сущностей, так что вполне может быть другой способ решения проблемы. Я предполагаю, что к этому моменту вы уже нашли решение, которое работает для вас.