Tôi đang làm Mã EF Phát triển đầu tiên dựa vào cơ sở dữ liệu hiện có. Vì tôi đã được đưa ra một lược đồ và một số tên bảng không lý tưởng, tôi muốn đặt tên một số lớp thực thể khác với bảng bên dưới và thực hiện ánh xạ trong OnModelCreating. Không thể ánh xạ thực thể vào bảng nếu một thực thể khác có cùng tên với bảng
Điều này dường như không hoạt động nếu tên lớp thực thể xung đột với tên bảng hiện có, ngay cả khi tôi remap chúng trong mã.
Với những (tạo thành ví dụ này) các lớp thực thể:
- Widget
- Gadget
Tôi đang cố gắng để thực hiện ánh xạ sau trong OnModelCreating:
modelBuilder.Entity<Gadget>.ToTable("Sprocket");
modelBuilder.Entity<Widget>.ToTable("Gadget");
Khi thời gian chạy, điều này mang lại lỗi sau:
System.InvalidOperationException : The entity types 'Widget' and 'Gadget' cannot share table 'Gadget' because they are not in the same type hierarchy or do not have a valid one to one foreign key relationship with matching primary keys between them.
Điều này không có ý nghĩa khi tôi ánh xạ đối tượng Gadget ra khỏi bảng Tiện ích nhưng dường như một số ánh xạ đang diễn ra tự động ngay cả khi tôi chỉ định rõ ràng.
Giải thích cho hành vi này là gì và có thể giải quyết được không?
Cảm ơn đã gợi ý, nhưng tôi đã có mà dòng mã tại chỗ. Trên một ý thích, tôi đã cố gắng loại bỏ nó và kết quả là như nhau. –
Nếu bạn có quyền kiểm soát tên đối tượng của mình, tại sao bạn không chỉ đặt tên cho một tên bảng? – OpticalDelusion
Bạn tăng điểm tốt. Tôi có thể làm điều đó, nhưng tại thời điểm này, tôi vẫn muốn được biết tại sao nó không hoạt động. –