Entity framework 4 如何在代码中动态地将表添加到EF4上下文中-无代码优先

Entity framework 4 如何在代码中动态地将表添加到EF4上下文中-无代码优先,entity-framework-4,linq-to-entities,ef4-code-only,Entity Framework 4,Linq To Entities,Ef4 Code Only,我们每6个月运行一系列报告,并将结果存储到表中,以便将来随时查询/查看。根据周期,将添加两个或四个表。它们有一个标准命名约定yyyy\u mmm\u Table\u x 我们的网站是使用ASP.NETMVC2构建的,数据库是使用EF4使用标准模型设计器建模的,而不是先编写代码 我希望能够在运行时将报表表动态添加到EF4上下文中。我不想使用设计器手动将它们添加到模型中,否则每个报告周期我们都必须更新和重新编译模型,因为我们添加了额外的报告。当其他一切都没有改变时,这将是一个维护难题 我可以通过查询

我们每6个月运行一系列报告,并将结果存储到表中,以便将来随时查询/查看。根据周期,将添加两个或四个表。它们有一个标准命名约定yyyy\u mmm\u Table\u x

我们的网站是使用ASP.NETMVC2构建的,数据库是使用EF4使用标准模型设计器建模的,而不是先编写代码

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

我可以通过查询sysobjects获得可用表的列表。如果我可以在站点启动时获得这个列表并将表添加到上下文中,那么我可以使用动态LINQ库之类的工具根据用户从下拉列表中选择的表进行查询

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

否则,我想我必须回到ADO.Net来处理这个区域。这可能是最好和最简单的方式,所以我想我正在寻找意见。我不是狂热者,所以我不需要所有的东西都在LINQ和EF4中但它似乎有点干净和一致,特别是如果它允许我使用动态LINQ的话。但有时候,旧的方法更简单

所以,如果你有任何建议或意见,我很乐意听听


谢谢

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

所有运行时映射都存储在由
EntityConnection
准备的
MetadataWorkspace
中。所以,如果你想玩它,你可以从那里开始,但是这些类的公共接口看起来不太有希望

我猜您希望在这些表上运行Linq to实体,所以使用存储过程根据数据参数从正确的表返回数据可能不是一个选项

为此,应使用通用ADO.NET