Để sử dụng đầy đủ LinqToSql trong ứng dụng ASP.net 3.5, cần tạo DataContextclasses (thường được thực hiện bằng cách sử dụng trình thiết kế trong VS 2008). Từ quan điểm UI, DataContext là một thiết kế của các phần cơ sở dữ liệu của bạn mà bạn muốn hiển thị thông qua LinqToSql và không thể thiếu trong việc thiết lập các tính năng ORM của LinqToSql.Nhiều lớp DataContext có phù hợp không?
Câu hỏi của tôi là: Tôi đang thiết lập một dự án sử dụng cơ sở dữ liệu lớn, nơi tất cả các bảng được kết nối với nhau theo một cách nào đó thông qua Khóa ngoại. Độ nghiêng đầu tiên của tôi là tạo một lớp DataContext khổng lồ mô hình hóa toàn bộ cơ sở dữ liệu. Bằng cách đó tôi có thể trong lý thuyết (mặc dù tôi không biết điều này có cần thiết trong thực tế hay không) sử dụng các kết nối Khóa ngoài được tạo thông qua LINQToSql để dễ dàng chuyển giữa các đối tượng liên quan trong mã của tôi, chèn các đối tượng liên quan, v.v.
Tuy nhiên, sau khi đưa ra một số suy nghĩ, bây giờ tôi nghĩ rằng việc tạo nhiều lớp DataContext có ý nghĩa hơn, mỗi lớp liên quan đến một không gian tên cụ thể hoặc phần tương quan logic trong cơ sở dữ liệu của tôi. Mối quan tâm chính của tôi là instantiating và xử lý một lớp DataContext khổng lồ tất cả các thời gian cho các hoạt động cá nhân có liên quan đến các khu vực cụ thể của cơ sở dữ liệu sẽ áp đặt một áp đặt không cần thiết về tài nguyên ứng dụng. Ngoài ra, việc tạo và quản lý các tệp DataContext nhỏ hơn dễ dàng hơn một tệp lớn. Điều mà tôi sẽ mất là sẽ có một số phần xa của cơ sở dữ liệu không thể điều hướng qua LinqToSql (mặc dù một chuỗi các mối quan hệ kết nối chúng trong cơ sở dữ liệu thực tế). Ngoài ra, sẽ có một số lớp bảng sẽ tồn tại trong nhiều hơn một DataContext.
Bất kỳ suy nghĩ hoặc kinh nghiệm nào về việc liệu nhiều DataContexts (tương ứng với không gian tên DB) có phù hợp thay cho (hoặc ngoài) một lớp DataContext rất lớn (tương ứng với toàn bộ DB) không?
Có, OP không đúng khi giả định rằng một DC lớn cần nhiều thời gian hơn để khởi tạo. Trong thực tế, sau khi thể hiện đầu tiên được tạo ra trong một tiến trình đang chạy, các thể hiện tiếp theo của cùng một DC có thể được tạo gần như ngay lập tức. –