Dzieje się tak ze względu na sposób, w jaki EF4 działa z pierwszym modelem.
Podczas tworzenia pierwszego modelu model jest w stanie, w którym SSDL nie istnieje. Możesz przeciągać jednostki, kojarzyć je i tak dalej, ale jeśli spojrzysz na SSDL w pliku EDMX, zobaczysz, że żadna z jednostek nie ma skojarzonej tabeli magazynu w SSDL.
Zmienia się po kliknięciu Generate Database From Model
elementu menu kontekstowego. Mylące jest to, że ta czynność robi więcej niż tylko generowanie skryptu DDL. W rzeczywistości zmienia plik EDMX, aby zawierał informacje SSDL. Od tego momentu plik EDMX wejdzie w stan, w którym każda jednostka w projektancie / CSDL musi mapować do jednostki w SSDL. Jeśli nie zostanie zmapowane, spowoduje to błąd czasu kompilacji:
Nie określono mapowania dla następującego EntitySet / AssociationSet - (EntityName)
Innym interesującym faktem jest to, że nie jest to rodzaj błędu, który uniemożliwi kompilację. W rzeczywistości wygeneruje bibliotekę klas wyjściowych. Czy nie powinno to być ostrzeżenie czy coś takiego?
Aby zapobiec temu błędowi, wszystko, co musisz zrobić po wstawieniu nowego elementu, to Generate Database From Model
ponownie. To zaktualizuje SSDL i naprawi mapowania.
EDYTOWAĆ
Jeśli nie używasz najpierw modelu i „aktualizujesz z bazy danych”, ten błąd wystąpi również w przypadku usunięcia tabeli na serwerze DB. Dzieje się tak, ponieważ Entity Framework nie usunie automatycznie jednostki za Ciebie. Usuń jednostkę ręcznie, a błąd zniknie.