将多个表动态映射到单个实体
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 中的一个表?