2012-09-10 33 views
10

Tôi đang sử dụng MVC3, C# 4.0 và Entity Framework trong Visual Studio 2010. Tôi đang tạo tệp edmx và Designed.cs của mình từ cơ sở dữ liệu. Sau đó tôi tạo ra các giao diện từ các thực thể trong tệp Designer.cs như là một phần của cấu trúc nLayer của tôi.Tạo giao diện từ cơ sở dữ liệu khung thực thể đầu tiên được tạo mã tự động

Mã ban đầu là

public partial class DataEntrySummary : EntityObject 

mà sau đó trở thành

public partial class DataEntrySummary : EntityObject, Mb.Interface.IDataEntrySummary 

mối quan tâm của tôi là khi những thay đổi cơ sở dữ liệu (và sẽ) và tôi tái tạo các tập tin edmx tôi sẽ mất tất cả các giao diện các định nghĩa.

Có cách nào tốt hơn để đạt được cùng một kết quả mà không phải tạo lại giao diện hay không.

Cảm ơn bạn

Trả lời

20

EF tạo các lớp học với từ khóa partial để bạn có thể thêm chức năng bổ sung cho các thực thể bằng cách tạo một tệp khác và đặt giao diện cụ thể ở đó.

public partial class DataEntrySummary : Mb.Interface.IDataEntrySummary 
{ 
} 

Những tệp này sẽ không bị ảnh hưởng khi EF cập nhật mô hình.

+0

Cảm ơn bạn, câu trả lời đầy đủ, rõ ràng và thực tế. –

+0

Rất đẹp, tôi đã quét hoàn toàn từ khóa 'partial' và thậm chí không nhận ra ... – JDandChips

1

Tôi nghĩ rằng việc tạo sự kiện trên cập nhật mô hình sao cho mỗi lần cập nhật mô hình, nó sẽ thêm định nghĩa giao diện.

Tùy chọn khác là tạo lớp proxy triển khai giao diện cụ thể và kế thừa từ mô hình.

+0

Cảm ơn bạn về điều này - câu trả lời hay nhất –

2

Bạn đang đi đúng hướng. Nhưng để giữ lại các giao diện sau mỗi lần làm mới EDMX, bạn sẽ cần phải tùy chỉnh các tệp T4.

Bạn có thể xem các tệp T4 tùy chỉnh từ https://entityinterfacegenerator.codeplex.com/ Chúng tạo 1 giao diện cho từng lớp học của bạn để bạn có thể dễ dàng thử và thử nghiệm chúng một cách riêng biệt.

Vì vậy, mỗi lần bạn thêm một bảng hoặc trường mới, bạn có thể chỉ cần thực thi các mẫu T4 của chúng cùng với các mẫu do Microsoft cung cấp để tạo các loại EF.

Trân trọng.

+1

Cảm ơn vì điều này, thật đáng buồn quá muộn vì chúng tôi đã chuyển sang mã trước. Tôi chắc chắn sẽ xem xét lại điều này nếu cần thêm. –

+0

Điều chắc chắn. Cảm ơn bạn đã kiểm tra dự án. Hy vọng nó có thể giúp những người như chúng ta, những người đã quyết định công nghệ nào để sử dụng. Mã IMO đầu tiên chỉ tuyệt vời cho các dự án mới. Cơ sở dữ liệu đầu tiên có vẻ thực tế hơn. Đó là lý do tại sao tôi xây dựng dự án để giúp những người không có khả năng làm mã đầu tiên. – Believe2014

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