Tôi giả sử bạn đang hỏi về thiết kế so với mẫu thời gian chạy. Tôi nói chung tôi muốn nói no:
Mặc dù có thể phân vùng cơ sở dữ liệu của bạn thành nhiều ngữ cảnh dữ liệu, nếu muốn và không có sự chồng chéo giữa hai ngữ cảnh.
chồng chéo là Bad
ví dụ bạn có một số WebsiteContext
và AdminContext
. WebsiteContext
để hiển thị Product
và hoàn thành Order
giây. A WebsiteUser
được gắn vào Order
. AdminContext
dành cho các thành viên Staff
của bạn để xử lý tiền hoàn lại cho số bị hủy Orders
, cũng tham chiếu WebsiteUser
. AdminContext
cũng cần đặt lại mật khẩu và cập nhật các chi tiết khác cho số WebsiteUser
.
Bạn đang nghĩ đến việc làm điều này vì bạn không muốn trang web để xử lý hoặc thậm chí biết về Returns
WebsiteContext
Product -- Order -- WebsiteUser
AdminContext
Staff -- Returns -- Order -- WebsiteUser
Ở phía trên, chúng ta có thể thấy chúng tôi đang sao chép nhiều đối tượng trong dữ liệu khác nhau Các ngữ cảnh. Điều này có mùi xấu, và nó thực sự chỉ ra rằng nhân tạo phân chia cơ sở dữ liệu vào bối cảnh dữ liệu khác nhau là một quyết định sai lầm. Bạn có> 2 cơ sở dữ liệu sau khi tất cả, hay chỉ là một cơ sở dữ liệu? Sự trùng lặp vi phạm nguyên tắc DRY (Dont Repeat Yourself) vì WebsiteContext.WebsiteUser không giống với AdminContext.WebsiteUser và trong khả năng tất cả các mã sẽ lộn xộn khi một cái gì đó cần phải quan tâm đến cái mà họ đang tham chiếu.
Ngữ cảnh dữ liệu LINQ chỉ là một trình ánh xạ OR và cần được coi là hộp đen ưa thích giúp viết mã truy cập dữ liệu dễ dàng hơn. Một số bản demo LINQ làm cho nó trông giống như bạn không còn cần các lớp khác, nhưng một chương trình của bất kỳ phức tạp vẫn được hưởng lợi từ một thiết kế lớp.
Có lẽ bạn nên xử lý các đối tượng LINQ như các đối tượng để dễ dàng chuyển dữ liệu và tạo lớp Miền ẩn chúng dưới dạng chi tiết triển khai. Có một đọc của DDD - Domain Driven Design.
Ngày của riêng mình, chỉ sử dụng các đối tượng LINQ từ giao diện người dùng giống nhất với mẫu Transaction Script
. Trong trường hợp như vậy bạn vẫn sẽ được hưởng lợi từ việc có một lớp logic mà sẽ chăm sóc các chi tiết.
Mặc dù bạn có thể không muốn trách nhiệm của bối cảnh quá rộng, ngữ cảnh dữ liệu chỉ là biểu diễn của cơ sở dữ liệu. Nó không phải là một cơ chế bảo mật, và nó không thể ngăn cản bạn làm hỏng dữ liệu.
Nguồn
2009-02-18 02:51:40
http://stackoverflow.com/questions/226127/multiple-single-instance-of-linq-to -sql-datacontext – spender
tương tự nhưng không giống nhau :) Chúc mừng cho liên kết tôi mặc dù. – Spence