0

我有 2 个应用程序:

  1. Manager UI - 它应该能够创建一个包含所有字段(用户名、电子邮件、年龄等)的用户并显示它们。
  2. 核心组件 - 只需要 UserId 和 Username 字段,并且需要非常高效。它也不应该能够写入数据库。

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

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

我相信,如果我能以某种方式将模型设置为只读,它会解决这个问题,但这只是一种预感(我找不到这样做的方法——还有吗?)

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

4

2 回答 2

0

EF was really designed for you to gen the model for each specific use case. You are not supposed to need to gen a single large monolithic model because they are so easy to build and update (that was the theory anyway).

So I would say you should generate 2 models - one for each use case scenario. This means you only need to include what is absolutely necessary for each use case.

于 2009-07-11T05:04:17.613 回答
0

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

于 2009-07-10T15:24:43.753 回答