2009-07-10 65 views
0

我有2个应用程序:建模实体为特定的应用 - 实体框架

  1. 管理器界面 - 这应该能够创造出与它的所有字段(用户名,电子邮件,年龄等)的用户,并显示它们。
  2. 核心组件 - 只需要UserId和Username字段,并且需要非常高效。它也不应该能够写入数据库。

看来我需要2个不同的模型,一个用于UI应用程序,另一个用于核心组件。 当我创建第一个模型时,生活很美好。但是当我尝试创建第二个模型时,我得到了所有不需要的字段。如果我试图删除它们 - 我设法只为可空字段做这件事,但不能用于所需的字段(实际上只需要保存)。 下面是我得到的结果:“表中的Users Users.email用户必须映射:它没有默认值并且不可为空。”

将“email”字段设置为私有getter & setter不会解决我的问题,因为我不想在实体上存储所有值(并从数据库中获取字段) - 正如我所说的,这个应用程序需要尽可能高性能。

我相信,如果我能以某种方式设置为模型只读,它会解决这个问题,但它仅是一种预感(我无法找到一个方法来做到这一点 - 是therer?)

任何帮助,将不胜感激。 谢谢, Nir。

回答

0

没有“只读”实体模型这样的事情。但是,您可以通过设置MergeOption值来执行只读查询,以便不跟踪对实体的更改。您还可以通过投影到匿名类型中而不是在查询中返回实体类型来仅选择应用程序中需要的列。因此,您可以在两个应用程序中使用相同的模型,但在“核心组件”中,您将以不同的方式使用该模型,从而为只读使用提供更好的性能。

0

EF真的为您设计创为每个特定用例模型。你不需要创建一个庞大的整体模型,因为它们很容易构建和更新(无论如何,这是理论)。

所以,我要说,你应该产生2款 - 每个用例场景。这意味着您只需要包含每个用例的绝对必需内容。

+0

这正是我的观点,但是EF有一个限制,可以包含模型中的所有不可空字段,无论如何! – nirpi 2009-07-11 07:07:15