我应该在表示层中使用实体框架实体吗?

时间:2012-04-27 11:20:37

标签: c# entity-framework design-patterns

我想创建一个多层(3层)应用程序。 EF是首选的ORM。

我应该在我的表示层中直接使用EF创建的实体,还是应该创建新的自定义实体并映射实体?如果是这样,我应该在自定义权限之上创建接口吗?

我应该将EF生成的.edmx文件放在数据层中吗?

由于

2 个答案:

答案 0 :(得分:3)

我个人会为我的表示层创建ViewModel。你希望尽可能地抽出你的EF模型。

您的ViewModel不需要任何界面,它们只是简单的POCO / DTO

答案 1 :(得分:2)

数据库的需求和数据消费者的需求经常不一致,因此通常需要不同的模型。

例如,考虑添加新客户的用户故事。故事通常包括办公室电话号码和传真号码的“需要”。

马上,数据库设计师会选择“那是重复数据”我需要一对多的关系,这样我们不仅可以容纳两个电话号码,而且可以按类型容纳几乎无限数量的电话。 (让我们甚至不会陷入多对多或一对多的电话号码的痛苦)

同时回到报告,屏幕,移动设备,你有什么UI体验 - 设计师说“我不在乎你能存储多少个电话号码,我只想处理两个:办公室号码和传真号码“你可以说用户处于核心非规范化状态:”

  1. 将您的数据库模型保持为某种合理的级别 正常化。
  2. 让您的用户界面的数据模型与用户一样非规范化
  3. 在中间开发一个图层,将一个模型映射到另一个模型。