Cpt*_*ger 6 c# architecture entity-framework
我不确定我是否能正确表达这一点,但......
我开始使用代码优先的实体框架构建一个解决方案,并开始感觉我正在污染我的域类(EF将用于生成数据库的类)具有太多特定于数据库的信息:我必须使某些方法成为虚拟的,以便可以进行延迟加载,我将明确针对数据库配置的属性添加到我的属性中,依此类推.我也担心这些课程在整个项目中会有多普遍.
首先,我是否有意义和/或我是否从根本上误解了如何使用EF?
其次,如果我理解这一点,我的问题是:是否有其他人区分用于生成数据库的代码优先类和他们的域类(可能使用自动映射器来填充另一个)?
我花了很长时间尝试解决这个问题的不同方法。由于其简单性,实体框架也可以并且非常容易地将数据类用作域类。
我的经验是,在小型项目中,您可以不用使用 EF 类作为域类。这既快速又简单,但是随着项目变得越来越大,这个问题开始变得越来越严重,因为您无法以任何方式控制访问。
最常见的情况是在 EF 类上公开导航属性时。您的整个应用程序现在将能够导航整个数据集。因此,使用此模型,您放弃对数据和域对象的所有控制。
将域类与 EF 分开有几个优点。首先,您将不会与 EF 或代码优先紧密相关。通过一定程度的分离/间接,您将能够根据需要更换数据框架。其次,您能够更有效地控制您的数据。
就我个人而言,我已经达到了一个务实的地步,我在每个项目开始时都会做出这个决定。如果项目很小并且包含在内,那么我可能会避免这种额外的抽象以支持简单性。在几乎所有中型和/或大型项目中,我都有分离。
| 归档时间: |
|
| 查看次数: |
705 次 |
| 最近记录: |