Các ORM POCO có thay thế các thực thể miền không?


10

Điều này hơi giống với câu hỏi này nhưng rộng hơn.

Nói chung, với các ORM như EF 4.1 hỗ trợ POCO, giờ đây có ý nghĩa gì khi các thực thể miền của bạn trở thành đối tượng được duy trì cho cơ sở dữ liệu của bạn không?

Với các ORM cũ hơn như EF 4 hoặc Linq-to-SQL, "đối tượng cơ sở dữ liệu" của bạn được tạo tự động và được kết hợp chặt chẽ với cơ sở dữ liệu của bạn và do đó, đối với các ứng dụng không tầm thường, đã được ánh xạ tới các thực thể miền thông minh, mạnh mẽ hơn trước khi được Đưa vào làm việc.

Có phải ý tưởng với các ORM mới hơn là chỉ xây dựng các thực thể miền mạnh mẽ và sau đó có một lớp dữ liệu chỉ đơn giản là cung cấp ánh xạ giữa các thực thể miền đã nói và DBMS của bạn?

Khi viết rằng tôi có cảm giác rằng điều này luôn luôn là mục tiêu, nhưng không dễ dàng (dễ dàng) có thể với các công cụ có sẵn, ít nhất là không có trong thế giới .NET.


EFv4 cũng hỗ trợ ánh xạ tới POCO và các lớp viết tay.
Ladislav Mrnka

Câu trả lời:


9

Tôi nghĩ mục tiêu chung với ORM là cơ sở dữ liệu được ánh xạ trực tiếp đến các đối tượng miền, đó là các POCO lý tưởng. Vì vậy, câu trả lời cho câu hỏi của bạn là có. Bây giờ, EF có khả năng ánh xạ tới các POCO, thật lý tưởng để coi các POCO đó là các thực thể miền. Đối với các ORM khác như NHibernate, điều này có thể thực hiện được một lúc và tôi tin rằng mọi người thường sử dụng chúng như vậy.

Nhưng mục tiêu có các thực thể miền được ánh xạ trực tiếp vào cơ sở dữ liệu không phải lúc nào cũng có thể đạt được. Có một số trường hợp cần có một bản dịch quan trọng giữa cơ sở dữ liệu và mô hình miền. ORM có thể không có khả năng thực hiện dịch thuật. Trong trường hợp này, bạn có thể muốn một lớp POCO trung gian được ánh xạ với ORM vào cơ sở dữ liệu và sau đó một lớp dịch thay đổi chúng thành POCO miền và quay lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.