【发布时间】:2011-06-25 04:28:46
【问题描述】:
我使用 Entity Framework 4.0 来创建我的数据访问层。然后我发现我的业务逻辑层具有与 DAL 相同的对象,但有一些扩展(即更多属性、一些函数和 setter 处的数据验证......)。
我计划在单独的项目中使用 DAL 和 BLL,并正在寻找在 BLL 中使用实体类并防止代码冗余的最佳实践。
我搜索了一下,主要有两个想法:
- 通过部分类扩展同一项目内的实体类
- 使用接口(由实体类和相关BLL类实现)。前者更受程序员欢迎。
上述方案的缺点:
- 我们需要在同一个项目中添加代码作为部分类的一部分。这适用于添加属性和方法,但不适用于覆盖某些内容(即在业务逻辑层设置属性之前添加验证)
- 如果实体模型发生变化,我们需要再次手动从实体类中提取接口,并且还需要对 BLL 相关类进行另一次更改(两次手动解决)。
我的问题是为什么我们不从相关实体类继承我们的 BLL 类并扩展/覆盖它们的方法和属性?
【问题讨论】:
标签: entity-framework inheritance business-logic-layer