2012-01-18 39 views
10

Tôi đang cố gắng tạo các thực thể từ cơ sở dữ liệu SQL của mình bằng cách sử dụng ADO.NET Entity Data Model và từ đó sử dụng Trình tạo DbContext ADO.NET. Khi tôi tạo edmx từ cơ sở dữ liệu, một trong những thực thể của tôi dường như bị thiếu trong nhà thiết kế nhưng khi tôi nhìn vào mã phía sau của edmx, tôi thấy nó trong mã và khi tôi tạo ra dbContext, thực thể không được tạo ra. ..Tạo khung thực thể thiếu một thực thể

Bất kỳ lời khuyên nào sẽ được đánh giá rất nhiều!

+2

Có lẽ bảng bạn đang thiếu một thực thể cho một bảng tham gia cho một mối quan hệ nhiều-nhiều? Những bảng đó không có một lớp thực thể tương ứng. – Slauma

+0

Có nó là một nhiều đến nhiều bảng nối. Hấp dẫn! Cảm ơn bạn đã phản hồi! – Hidan

+0

OK, tôi đã đăng bình luận của mình làm câu trả lời. – Slauma

Trả lời

15

Nếu bảng bạn thiếu đối tượng là bảng kết nối cho mối quan hệ nhiều-nhiều, bạn không có lớp tổ chức khi bạn tạo mô hình từ cơ sở dữ liệu. EF nhận ra điều này khi bảng có hai cột tạo thành một khóa chính hỗn hợp và mỗi cột là một khoá ngoại cho hai bảng khác.

EF quản lý bảng tham gia nội bộ và không hiển thị bảng dưới dạng thực thể. Bạn chỉ có thực thể "trái" và "đúng" với bộ sưu tập điều hướng trỏ đến nhau. Nếu bạn thêm hoặc xóa mối quan hệ bằng cách thêm hoặc xóa các phần tử vào các bộ sưu tập đó, EF sẽ tạo các câu lệnh INSERT và DELETE đúng cho bảng kết nối khi bạn gọi SaveChanges. Nhưng điều này xảy ra trong nội bộ và hoàn toàn ẩn với bạn.

Nói cách khác: Mọi thứ đều OK.

+0

Ahh ok, cảm ơn bạn đã giải thích thêm! – Hidan

+0

Vì vậy, không có cách nào để truy vấn thực thể đó? – Hidan

+1

@Willku: Ngoài việc sử dụng SQL trực tiếp, không. Bởi vì nó không phải là một thực thể. Bảng nối là một vật phẩm SQL mà EF tóm tắt đi theo thiết kế. Bạn không cần điều này như một thực thể. Bạn có thể thực hiện mọi thao tác của bảng kết nối thông qua các bộ sưu tập điều hướng của thực thể trái và phải. Nếu bảng tham gia sẽ có một hoặc nhiều cột bổ sung, bạn sẽ nhận được một thực thể cho bảng. Nhưng trong điều kiện EF, đây sẽ không phải là mối quan hệ nhiều-nhiều, nhưng thay vào đó là hai mối quan hệ một-nhiều với thực thể trung gian đó. – Slauma

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