ORM POCO是否取代域实体?


10

这有点类似于这个问题,但是范围更广。

总的来说,有了像EF 4.1这样的POM支持的ORM,现在将您的域实体作为持久化到数据库的对象有意义吗?

借助EF 4或Linq-to-SQL等较旧的ORM,您的“数据库对象”是自动生成的,并与数据库紧密耦合,因此,对于非平凡的应用程序,先将它们映射到更健壮的智能域实体投入工作。

使用较新的ORM的想法是仅构建健壮的域实体,然后具有仅提供所述域实体与您的DBMS之间映射的数据层吗?

在写作中,我感觉到这一直是目标,但使用现有工具并不容易(轻松),至少在.NET世界中并非如此。


EFv4还支持映射到POCO和手写类。
Ladislav Mrnka

Answers:


9

我认为ORM的总体目标是将数据库直接映射到域对象,理想情况下是POCO。因此,您的问题的答案是肯定的。既然EF能够映射到POCO,那么理想的是将这些POCO视为域实体。对于诸如NHibernate之类的其他ORM,这已经有一段时间了,我相信人们通常一直在使用它们。

但是,将域实体直接映射到数据库的目标并非总是可以实现的。在某些情况下,数据库和域模型之间需要大量转换。ORM可能无法进行翻译。在这种情况下,您可能需要一个中间POCO层,该中间POCO与ORM映射到数据库,然后是一个转换层,将它们更改为域POCO,然后再次返回。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.