Điều này là do cách thức hoạt động của EF4 với kiểu đầu tiên.
Khi bạn lần đầu tiên tạo mô hình đầu tiên, nó ở trạng thái SSDL không tồn tại. Bạn có thể kéo các thực thể, liên kết chúng, v.v., nhưng nếu bạn nhìn vào SSDL trên tệp EDMX, bạn sẽ thấy rằng không có thực thể nào có bảng lưu trữ được liên kết trong SSDL.
Điều đó thay đổi khi bạn nhấp vào Generate Database From Model
mục menu ngữ cảnh. Phần khó hiểu là hành động này không chỉ đơn giản tạo ra một tập lệnh DDL. Trên thực tế, nó thay đổi tệp EDMX để bao gồm thông tin SSDL. Từ thời điểm này, tệp EDMX sẽ đi vào trạng thái mà mọi thực thể trong trình thiết kế / CSDL phải ánh xạ tới một thực thể trong SSDL. Nếu một trong những không ánh xạ, nó sẽ gây ra lỗi thời gian biên dịch:
Không có ánh xạ nào được chỉ định cho EntitySet / AssociationSet sau - (EntityName)
Một thực tế thú vị khác là nó không phải là loại lỗi sẽ ngăn cản quá trình biên dịch. Thực sự nó sẽ tạo ra thư viện lớp đầu ra. Nó không phải là một cảnh báo hay gì đó?
Để ngăn lỗi này, Tất cả những gì bạn phải làm sau khi chèn một thực thể mới là Generate Database From Model
lặp lại. Điều đó sẽ cập nhật SSDL và sửa các ánh xạ.
BIÊN TẬP
Nếu bạn không sử dụng model-first và bạn "cập nhật từ cơ sở dữ liệu", bạn cũng sẽ gặp lỗi này trong trường hợp bạn đã xóa một bảng trong DB Server. Điều này là do Khung thực thể sẽ không tự động xóa thực thể cho bạn. Xóa đối tượng theo cách thủ công và lỗi sẽ biến mất.