实体框架:如何在数据库中的同一表中使用几个Entites



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

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

我想拥有一个用于更新表的实体,并有另一个用于从该表中阅读的实体。例如。我想拥有一个称为 EditStudent的实体,另一个名为 ViewStudent的实体,我的数据库中的表Student带有不同的字段。

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

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

是常见的。

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

使用实体框架时,您会经常使用存储库模式。如果您在Google上,您会发现许多解释。

您会发现两个图层(不确定这些图层的名称是否在任何地方使用)

  • 数据库层。这代表数据库中的表以及表之间的关系。在实体框架中,这是您的dbcontext,其DBSET。每个DBSET都是一个表格,将列和约束在列上。存储在dbContext中的模型表示表之间的关系:一对多,多对多的,键用作外键等。
  • 存储库层表示您要在数据库层上执行的操作。它隐藏了您使用的数据库方法。存储库层的用户不应该知道该层是使用实体框架还是访问数据库的其他方法。实际上,它不必是数据库。对于存储库层的用户,数据可能是Excel电子表格文件。

如果您遵循此部门,则您的DBContext应表示您的数据库。您计划使用此数据库的方式不在您的DBContext中。

可编辑的学生的概念和a vieuwable Student 通常是您的存储库层的东西。他们都将访问您的dbcontext中的学生表,但是一种类型可能只会返回使用公共获取功能的接口,而另一种类型将具有更改学生数据的功能。两者都将在同一dbcontext中使用同一表。

最新更新