12

Cho phép xem xét mặc định ASP.NET MVC cấu trúc thư mục ứng dụng, vì vậy nó trông như thế này:Nơi đặt mô hình dữ liệu khung thực thể trong ứng dụng MVC?

-App_data 
-Content 
-Controllers 
    HomeController.cs 
-Models 
    AccountModels.cs 
-Scripts 
-Views 

Câu hỏi của tôi là: đâu là nơi tốt nhất để đặt Entity Framework Data Model (EDMX) nộp? Là thư mục Mô hình? Có - chúng tôi biết rằng giải pháp tốt là giới thiệu Dự án mới và tham khảo nó với ứng dụng MVC, nhưng hãy quên điều này ngay bây giờ.

+1

** TẠI SAO ** bạn có muốn loại trừ giải pháp thích hợp lên phía trước - đặt tất cả nội dung này vào một hội đồng riêng biệt không ?? Đó là cách tiếp cận tốt nhất và sạch nhất - ** sử dụng nó! ** –

Trả lời

17

Đối với một dự án nhỏ, nó phải là một phần của Mô hình. Đối với một sản phẩm lớn hơn, kho lưu trữ và mô hình liên kết có thể nằm trong một hội đồng riêng biệt.

6

Điều này có thể gây tranh cãi, nhưng tôi sẽ bỏ phiếu +1 cho thư mục Mô hình.

Ứng cử viên duy nhất khác sẽ là App_Data, nhưng điều này thường dành cho cơ sở dữ liệu dựa trên tệp (ví dụ: SQL Server CE .MDF) và các tệp bạn không muốn IIS phân phối.

Vì EDMX là trừu tượng của cơ sở dữ liệu, nên đi vào thư mục Mô hình.

Nếu dự án lớn hơn, bạn chắc chắn nên di chuyển Mô hình EF của mình vào một dự án khác. Để tự kiểm chứng trong tương lai, hãy làm cho Bộ điều khiển truy cập EDMX qua Kho lưu trữ/Giao diện, vì vậy khi bạn di chuyển DAL sang một dự án khác, tất cả những gì bạn phải làm là thêm tham chiếu và thêm vào các câu lệnh sử dụng.

0

Ý kiến ​​của tôi là bạn nên tạo

  1. một dự án riêng biệt cho các đối tượng miền, DataContracts vv vv ... Giống như MyProject.Infrastructure trong đó có nhiều thư mục như DataContracts, Model, Exceptions, vv
  2. một dự án riêng biệt cho DataAccess có chứa DBContexts và Kho lưu trữ, theo cách này bạn có thể dễ dàng quản lý di chuyển sau này trên
+0

Hai dự án riêng biệt có thực sự cần thiết không? Tại sao không thêm các lớp miền và các lớp truy cập dữ liệu trong một dự án. Nếu bạn sẽ có nhiều cửa hàng dữ liệu phụ trợ khác nhau có thể một số không quan hệ thì các dự án riêng biệt cho các lớp miền và truy cập dữ liệu có ý nghĩa. –

1

Tôi sẽ đặt mô hình EF (còn gọi là mô hình vật lý) cách lắp ráp riêng của nó hoặc trong một bộ phận "cốt lõi" bên ngoài ứng dụng MVC chính. Điều tương tự cũng áp dụng cho logic nghiệp vụ/miền-logic/tên miền-dịch vụ của bạn/v.v. Tách biệt các nội dung không phải web khỏi Ứng dụng MVC-Web.

Điều này sẽ giúp bạn sử dụng lại phần cốt lõi của ứng dụng. Ví dụ: khi bạn cần hiển thị nó dưới dạng một dịch vụ, một công cụ dòng lệnh, công cụ di chuyển, v.v.

Vì việc lưu trữ nó trong quá trình lắp ráp của nó rất dễ dàng và mất một vài phút tôi thực sự khuyên bạn nên làm điều này cho mỗi ứng dụng nhỏ cũng vậy.

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