实体框架:如何在数据库中为同一个表建立多个模型?

时间:2017-12-13 23:16:36

标签: c# entity-framework ado.net-entity-data-model

我是实体框架的新手,我已经阅读了实体框架文档,并讨论了Conceptual ModelLogical Model

我在想我的模型中的实体是否应该与数据库表匹配?我猜答案是否定的。但我想知道如何实施以下方案:

我希望有一个实体来更新表,并有另一个用于从该表读取的实体。例如。我希望有一个名为EditStudent的实体和一个名为ViewStudent的实体,其中包含来自我的数据库中表Student的不同字段。

然后当我更新EditStudent字段时,我可以在学生表上提交对这些字段的更改。

怎么可能?此外,我的场景是实体框架中的惯常做法,还是每个数据库表都有一个实体?

1 个答案:

答案 0 :(得分:1)

通常在处理数据库时,有几个抽象层次。

使用实体框架时,您经常使用Repository Pattern。如果你谷歌它你会找到很多解释。

你会发现两层(不确定层的名称是否随处可用)

  • 数据库层。这表示数据库中的表以及表之间的关系。在Entity Framework中,这是您的DbContext及其DbSets。每个DbSet都是一个表,包含列上的列和约束。存储在DbContext中的模型表示表之间的关系:一对多,多对多,哪些键用作外键等。
  • 存储库层表示您要对数据库层执行的操作。它隐藏了您正在使用的数据库方法。存储库层的用户不应该知道该层是使用实体框架还是其他方法来访问数据库。实际上它不一定是数据库;对于存储库层的用户,数据可以是excel电子表格文件。

如果您遵循此划分,您的DbContext应代表您的数据库。您计划使用此数据库的方式不在您的DbContext中。

可编辑学生 vieuwable student 的概念通常来自您的存储库层。它们都将访问DbContext中的Student表,但是一种类型可能只返回带有公共get函数的接口,而另一种类型将具有更改Student数据的功能。两者都将在同一个DbContext中使用相同的表。