可能重复:
使用实体框架实体作为业务对象?
我正在研究将实体框架用作 ORM,但在阅读了大量内容后,我对 EF 对象的确切位置感到非常困惑。
我的印象是,ORM 的全部意义在于消除将对象映射到关系数据库的繁琐和复杂的工作。你加载你的数据库并得到一堆像魔法一样的对象。CRUD 的东西都是针对对象完成的。如果数据库发生更改,您将更改映射但您的对象保持不变。
这意味着您将在整个系统中使用这些对象,并且它们将具有行为。它们是业务对象。这对我来说很有意义,而且确实 MS告诉你如何添加行为
但是,我一直在阅读很多人说您永远不应该将 EF 对象用作您的业务对象,因为他们只关心数据的持久性,并且会将您的业务对象与 EF 耦合。他们建议使用 EF 作为数据层的抽象,并将它们映射到真实的业务对象。
这对我来说似乎毫无意义。当我仍然最终映射到我的业务对象时,为什么还需要另一个抽象层?如果我必须映射 EF 属性,我不妨映射 DB 列!
我认为 ORM 的全部意义在于自动化映射并充当后备存储的抽象?我错过了什么吗?
编辑:行为我的意思是业务逻辑。验证、计算属性、业务方法等。