将多个表动态映射到单个实体

Posted

技术标签:

【中文标题】将多个表动态映射到单个实体【英文标题】:Map multiple tables to a single entity dynamically 【发布时间】:2011-11-05 06:33:28 【问题描述】:

我有一些表应该每年添加到我的数据库中,并且数据库的名称包含年份(如 sell2005)并且我在这些表上编写了一些 ef 查询,并且查询只能在单个实体上(像sell2005)但是当sell2006或sell2007添加时我该怎么办?我如何使用我之前编写的单个查询来管理它们? 谢谢。

【问题讨论】:

【参考方案1】:

没有简单的方法。 EF 根本不是这种情况的工具。对于 EF,您必须拥有“单表”,因此您必须对一个按年份分区的真实数据库表使用分区,或者您必须在这些表之上构建一个视图。

问题在于,在 EF 中,类和表之间有严格的关系。即使它们完全相同,您也不能将单个类映射到多个表(继承不是您的解决方案除外)。因此,解决方法需要有多个 SSDL/MSL 映射 - 每个表一个,并为每个查询构造正确的上下文实例和正确的映射。据我所知,映射的动态更改是不可能的(除了在使用它们之前修改 SSDL/MSL 文件)。

【讨论】:

以上是关于将多个表动态映射到单个实体的主要内容,如果未能解决你的问题,请参考以下文章

将两个表的多对映射映射到单个实体

使用实体框架 4.1 代码优先方法将一对一的表关系映射到单个实体

如何将多个值类型集合映射到 Hibernate 中的一个表?

是否可以将表动态映射到实体框架核心或任何其他 ORM

Spring Boot JPA:将一个实体映射到具有相同列的多个(很多)表

如何将实体映射到包含层次结构的维度表?