2012-02-07 36 views
5

Tôi đang tìm giải pháp cho vấn đề mà tôi đang và có lẽ phải đối mặt.Chia sẻ mô hình giữa nhiều tệp edmx (Entity Framework 4.0)

Tôi đang làm việc trên một ứng dụng chứa gần 400 bảng. Ứng dụng bao gồm bảy dự án thư viện lớp (StudentInfo, thư viện, Phí vv) và mỗi tệp có .edmx tệp (bao gồm 50 bảng) với chiến lược tạo mã = ​​mặc định và một dự án ứng dụng web đơn tham khảo dự án thư viện lớp học .
Có khoảng 15 bảng chung và sẽ có mặt trong .edmx tệp trong mỗi dự án thư viện lớp học. Không gian tên của các lớp/mô hình giống nhau (Campus) trong tất cả các tệp .edmx.

Tôi đã tạo một lớp học một phần cụ thể là Trường học (là một trong bảng/mô hình commom) chứa một số phương pháp.

Tuy nhiên lỗi thời gian biên dịch sau đây được ném Loại 'Campus.School' tồn tại trong cả 'D: \ Project \ Campus \ CampusStudent \' và 'D: \ Project \ Campus \ CampusLibrary \ bin \ Debug \ CampusLibrary.dll '

Các giải pháp được đề xuất bởi các thành viên khác
1) Có các không gian tên riêng cho từng tệp .edmx.
2) Sử dụng các tên khác nhau cho các mô hình cụ thể là StudentSchool, LibrarySchool vv
Cả hai giải pháp sẽ buộc tôi phải nhân đôi các lớp chung với các phương thức của nó trong mỗi dự án thư viện lớp. Ai có thể giúp tôi không?

+0

Tôi đoán câu hỏi đặt ra cho dù bạn thực sự cần 15 bảng đó có trong tất cả các tệp edmx hay không. Bạn không thể tách các mô hình một cách hợp lý để loại bỏ sự thừa? –

Trả lời

6

Có thể có cách nếu bạn đang sử dụng mẫu POCO T4 để tạo thực thể hiện tại. POCO trong EF có thể là bất kỳ lớp nào trong bất kỳ không gian tên nào có cùng tên với thực thể trong EDMX của bạn và có tất cả các thuộc tính có cùng tên với thực thể trong EDMX (bao gồm cùng loại và khả năng truy cập cho getters và setters).

Xác định 15 lớp được chia sẻ của bạn trong một hội đồng khác (bạn phải tuân thủ các quy tắc POCO đã đề cập đó) và tham chiếu nó theo tất cả các dự án thư viện. Một khi bạn đã lắp ráp này tạo ra phiên bản của riêng bạn của mẫu POCO T4 mà sẽ không tạo ra các tập tin lớp học mới cho những thực thể chia sẻ và thay vào đó sử dụng các lớp học từ hội đồng tham chiếu.

Tùy chọn khác là tạo và bảo trì thủ công tất cả 400 lớp và kiểu ngữ cảnh EF. Đó là những gì bạn sẽ làm gì nếu bạn sử dụng ánh xạ mã duy nhất (hay còn gọi là mã-đầu tiên) và bạn sẽ không có những vấn đề này.

+0

Cảm ơn bạn đã trả lời. Tôi sẽ cố gắng thực hiện nó. –

+0

Kính gửi Ladislav, Bạn có ứng dụng mẫu hoặc liên kết đến một tài nguyên có thể giúp tôi triển khai nó hay không. Trên thực tế tôi không thể áp dụng đề xuất của bạn để tạo mẫu POCO T4 ** sẽ không tạo tệp lớp mới cho các thực thể được chia sẻ đó và thay vào đó sử dụng các lớp từ assembly được tham chiếu ** vì tôi không thành thạo EF –

+0

Tôi xin lỗi, tôi không có một ví dụ. Bạn chỉ cần tạo bộ sưu tập mã hóa tĩnh của tên thực thể không được tạo. Bộ sưu tập này sẽ được xác định trực tiếp trong mẫu. Trong phần mẫu tạo mã cho các thực thể xác nhận rằng tên thực thể không có trong bộ sưu tập. Bạn cũng sẽ cần sửa đổi mã để tạo thuộc tính điều hướng trong các thực thể khác để sử dụng đúng loại từ assembly được tham chiếu. –

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