Apakah POCO ORM menggantikan entitas domain?

10

Ini agak mirip dengan pertanyaan ini tetapi lebih luas.

Secara umum, dengan ORM seperti EF 4.1 yang mendukung POCO, apakah sekarang masuk akal untuk menjadikan entitas domain Anda sebagai objek yang bertahan di basis data Anda?

Dengan ORM yang lebih lama seperti EF 4 atau Linq-to-SQL, "objek basis data" Anda dibuat secara otomatis, dan digabungkan secara erat ke basis data Anda, dan karenanya, untuk aplikasi non-sepele, dipetakan ke entitas domain yang lebih kuat dan cerdas sebelum menjadi mulai bekerja.

Apakah ide dengan ORM yang lebih baru hanya untuk membangun entitas domain yang kuat, dan kemudian memiliki lapisan data yang hanya menyediakan pemetaan antara entitas domain tersebut dan DBMS Anda?

Dalam menulis bahwa saya mendapatkan perasaan bahwa ini selalu menjadi tujuan, tetapi tidak mudah (dengan mudah) mungkin dengan alat yang tersedia, setidaknya tidak di dunia .NET.

Adam Rackis
sumber
EFv4 juga mendukung pemetaan ke POCO dan kelas tulisan tangan.
Ladislav Mrnka

Jawaban:

9

Saya pikir tujuan umum dengan ORM adalah bahwa database dipetakan langsung ke objek domain, yang idealnya adalah POCO. Jadi jawaban untuk pertanyaan Anda adalah ya. Sekarang EF mampu memetakan ke POCO, ideal untuk mempertimbangkan POCO tersebut sebagai entitas domain. Untuk ORM lain seperti NHibernate, ini dimungkinkan untuk sementara waktu dan saya percaya orang pada umumnya telah menggunakannya.

Tetapi tujuan memiliki entitas domain yang langsung dipetakan ke database tidak selalu dapat dicapai. Ada beberapa kasus di mana ada terjemahan yang signifikan diperlukan antara database dan model domain. ORM mungkin tidak dapat melakukan terjemahan. Dalam hal ini Anda mungkin ingin lapisan POCO menengah yang dipetakan dengan ORM ke database dan kemudian lapisan terjemahan yang mengubahnya menjadi POCO domain dan kembali lagi.

RasionalGeek
sumber