0

我们每 6 个月运行一系列报告,并将结果存储到可以在未来随时查询/查看的表格中。根据循环,将添加两个或四个表。它们具有 yyyy_mmm_Table_x 的标准命名约定。

我们的网站是使用 ASP.Net MVC2 构建的,并且数据库是使用标准模型设计器而不是 Code First 使用 EF4 建模的。

我希望能够在运行时将报告表动态添加到 EF4 上下文中。我不想使用设计器手动将它们添加到模型中,否则每个报告周期我们都必须更新和重新编译模型,因为我们添加了额外的报告。当没有其他任何改变时,这将是一个令人头疼的维护问题。

我可以通过查询 sysobjects 来获得可用表的列表。如果我可以在站点启动时获取此列表并将表添加到上下文中,那么我可以使用动态 LINQ 库之类的东西来查询它们,具体取决于用户从下拉列表中选择的表。

我不能开箱即用地使用 EF4 的 Code First,因为这将迫使我为表创建具体的类,而这将是同样令人头疼的维护问题。我怀疑我可以使用 Code First 框架用来动态更新上下文的相同策略,但我根本没有看过这个库,我希望熟悉它的人能指出我正确的方向。

否则我想我将不得不回到 ADO.Net 来处理这个领域。这可能是最好和最简单的方法,所以我想我正在寻找评论。我不是狂热者,所以我不需要所有东西都在 LINQ 和 EF4 中。:) 但它似乎更清洁和一致,特别是如果它允许我使用动态 LINQ。但有时旧方法更简单。

因此,如果您有任何建议或意见,我很乐意听取他们的意见。

谢谢!

4

1 回答 1

0

即使使用常见的 EF,您仍然需要为每个表添加新的数据类型,因为当您映射表时,您需要新ObjectSet的新实体类型才能运行查询。据我所知,即使表结构完全相同,也不可能将两个表映射到同一个实体。

所有运行时映射都存储在MetadataWorkspaceprepared byEntityConnection中。所以如果你想玩它,你可以从那里开始,但这些类的公共接口看起来并不乐观。

我猜您想在这些表上运行 Linq-to-entities,因此使用基于数据参数从正确表返回数据的存储过程可能不是一个选项。

为此,您应该使用常见的 ADO.NET。

于 2011-02-18T09:00:20.373 回答