1

我正在研究一个不是财产设计的过时数据仓库。不幸的是,由于一些限制,我无法重新设计整个数据库,因此我正在使用多个表来保存特定年份的信息。我需要一次查询 3 个表(每年的今天日期为 3 个不同的年份)。有没有办法在不知道运行时使用的表的情况下创建这个查询?我正在尝试在实体框架中执行此操作,因为应用程序正在移植到 ASP.NET MVC 3,但我只在表是静态的时候使用实体框架。

下面是我正在使用的表结构的示例。

表:

INFO2008
INFO2009
INFO2010
INFO2011
INFO2012

所有表格都使用相同的表格设计:

ID (INT)
FirstName (VARCHAR)
LastName (VARCHAR)
ZipCode (VARCHAR)
Date (DATETIME)

现在,如果我今天的日期是 2012 年 1 月 1 日,我需要一个查询,该查询将从 INFO2012 中提取 2012 年 1 月 1 日的所有行数,从 INFO2011 中提取 2011 年 1 月 1 日和 2010 年 1 月 1 日从信息 2010。每个表只保存当年的记录列表。所以表名(带年份)需要在运行时动态计算出来。

4

1 回答 1

0

我能够使用以下方法完成此操作:

Context.CreateQuery<EntityObject>(String.Format("SELECT VALUE t FROM {0}", "INFO2011")); 

这样,我可以将 INFO2011 切换到我需要从中提取结果的任何当前表年份。此外,使用它,我也可以动态地将 ObjectParameters 添加到 SQL 语句中。为了访问视图上的字段,我创建了一个所有实体都继承的接口,这样即使我们不知道视图中使用的表,该接口也允许我从任何表中提取值,因为它们所有共享相同的设计。

于 2012-04-26T13:46:29.550 回答