2012-05-04 26 views
5

Tôi đang sử dụng các lớp POCO được tạo và Khung thực thể.Xóa thuộc tính điều hướng khỏi các lớp POCO trong Entity Framwork

Để làm cho mã trở nên phức tạp hơn, tôi đang cố gắng loại bỏ tất cả các thuộc tính điều hướng khỏi mã trong khi vẫn giữ các ràng buộc khóa ngoài trong cơ sở dữ liệu (các thuộc tính điều hướng làm hại nhiều hơn tốt cho chúng ta).

Nếu tôi loại bỏ chúng bằng tay từ các POCO-lớp tôi nhận được lỗi sau

The entity type UserEntity is not part of the model for the current context

Nếu tôi cố gắng để loại bỏ chúng khỏi .edmx-file tôi nhận được lỗi sau:

Error 3 Error 3015: Problem in mapping fragments starting at lines 479, 562:Foreign key constraint 'fk_StorageContracts_User1' from table StorageContract (OwnerUserID) to table User (ID):: Insufficient mapping: Foreign key must be mapped to some AssociationSet or EntitySets participating in a foreign key association on the conceptual side.

Có cách nào để loại bỏ các thuộc tính điều hướng khỏi các lớp POCO mà không loại bỏ FK tương ứng không?

+0

Bạn có vấn đề gì với các thuộc tính điều hướng? – Eranga

+0

Sử dụng "các lớp POCO được tạo", trước tiên bạn có đang làm việc với mô hình không? Tại thời điểm nào bạn nhận được "Các loại thực thể UserEntity không phải là một phần của mô hình cho bối cảnh hiện tại" lỗi? –

+0

@SteveWilkes: Tôi đang sử dụng phương pháp này http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx (với EF 4.3). Tôi nhận được lỗi khi tôi cố gắng lấy một thực thể từ db. – Yrlec

Trả lời

1

Tôi biết điều này là cũ, nhưng, vì vẫn không có câu trả lời, tôi nghĩ rằng tôi muốn cung cấp cho nó một thử:

tôi vẫn đang làm việc trong EF 4.0, nhưng, làm theo tấm gương mà bạn gọi , bạn có một xxxModel.tt. Nếu bạn sẵn sàng tinh chỉnh điều đó, bạn có thể tìm thấy nơi tạo Thuộc tính Điều hướng và thay đổi chúng thành các thuộc tính tự động đơn giản. Tôi đã có một dự án tương tự nơi tôi tạo ra chúng như thế này:

public List<NavDataX> NavDataXs 
{ 
    get; set; 
} 

Bây giờ, chúng vẫn còn ở đó, nhưng chúng không có giá trị cho đến khi bạn đặt chúng một cách rõ ràng. Làm theo cách này, tôi đã không gây rối với EDMX và không gặp phải hai lỗi mà bạn đã đề cập.

+0

+1 cho cả câu hỏi và câu trả lời này đã giúp tôi theo dõi vấn đề của mình với EF 5.0. Trong trường hợp của tôi, tôi có tệp .tt trong một dự án riêng biệt trỏ đến tệp .edmx toàn cầu (lớn). Tôi đã tinh chỉnh nó để ngăn chặn đầu ra cho các lớp không mong muốn và các thuộc tính điều hướng, nhưng sau đó không thể tìm ra lý do tại sao ngữ cảnh sẽ không tải các đối tượng của tôi. Tôi tiếp tục nhận được "Loại thực thể [NAME] không phải là một phần của mô hình cho ngữ cảnh hiện tại", mà hầu hết các kết quả tìm kiếm trên web đều đề xuất vấn đề kết nối chứ không phải vấn đề về ánh xạ. –

Các vấn đề liên quan