Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Khung thực thể 4 Bảng mỗi thứ bậc - Làm thế nào để xác định thuộc tính điều hướng trên trẻ em?

Vì vậy, tôi đã giải quyết được một số vấn đề của mình, nhưng tôi lại đụng phải một bức tường gạch.

Trước hết, khi bạn tạo FK tự tham chiếu ở phía cơ sở dữ liệu, khi bạn thử và "Cập nhật mô hình từ cơ sở dữ liệu", Entity Framework sẽ thêm các thuộc tính điều hướng này vào kiểu cơ sở chính, vì nó không có ý nghĩa rõ ràng về TPH - bạn cần làm điều này ở phía mô hình.

NHƯNG, bạn có thể thêm thủ công các thuộc tính điều hướng cho các loại con.

WRT lỗi này:

Đó là bởi vì tôi có một FK có tên "Location_State" mà tôi đang cố gắng sử dụng cho mối quan hệ "ZipCode_State" VÀ mối quan hệ "City_State" - không hoạt động (vẫn không biết tại sao).

Vì vậy, để giải quyết vấn đề đó, tôi đã phải thêm các cột bổ sung và FK bổ sung - một cột được gọi là "ZipCode_State" và một cột khác có tên "City_State" - rõ ràng nó phải là 1-1 giữa nav và FK vật lý.

Đó là lĩnh vực phân biệt đối xử của tôi. Trong phía cơ sở dữ liệu, nó không thể nullable .

Tôi đã đọc các chủ đề về vấn đề này và họ nói rằng bạn cần thay đổi các mối quan hệ từ 0 .. * thành 1 .. * - nhưng các mối quan hệ của tôi đã là 1 .. *.

Nếu bạn nhìn vào bảng cơ sở dữ liệu thực tế "Vị trí" của tôi ở trên, tất cả các FK đều không có giá trị (chúng phải như vậy). Do đó, tôi bắt đầu tự hỏi liệu các mối quan hệ của mình có nên bằng 0 .. *.

Nhưng chúng vô hiệu vì TPH - không phải tất cả "Vị trí" sẽ có "Trạng thái". Nhưng nếu Vị trí đó là "Thành phố", thì nó CÓ "Tiểu bang".

Cảm xúc của tôi càng được an ủi bởi câu hỏi SO này: ADO EF - Liên kết ánh xạ lỗi giữa các loại phát sinh trong TPH

Tôi thực sự đã thử cách giải quyết đó (trước cả khi tôi bắt gặp nó) và cách giải quyết này không phù hợp với tôi. Tôi thậm chí đã thử thay đổi tất cả các mối quan hệ từ 1 .. * thành 0 .. *, và vẫn không gặp may.

Lãng phí quá nhiều thời gian ở đây, tôi đã quay trở lại TPT.

Vào cuối ngày, với TPH, tôi sẽ có một cái bàn lớn đến mức nực cười, với rất nhiều và rất nhiều cột thừa, không thể bỏ qua. THAM GIA một cách khôn ngoan, nó hiệu quả hơn. Nhưng ít nhất với TPT, tôi không bắt buộc phải có FK có thể vô hiệu và tự tham chiếu.

Nếu ai có giải pháp cho vấn đề này, hãy cho tôi biết. Nhưng cho đến lúc đó, tôi vẫn gắn bó với TPT.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL- Đếm số lần xuất hiện của một từ cụ thể trong tất cả các thủ tục được lưu trữ

  2. SQL Server Dynamic Pivot trong UDF trả về bảng

  3. YEAR () Ví dụ trong SQL Server (T-SQL)

  4. Lấy múi giờ hiện tại của máy chủ trong SQL Server (T-SQL)

  5. SQL Exception khi kết nối với máy chủ SQL