将新表动态添加到datacontext或EDM

时间:2011-06-07 05:39:25

标签: c# linq-to-sql datacontext

我知道我们可以添加外部XML映射文件来动态更改数据上下文中的表名。但根据我在大多数帖子中看到的情况,只有表结构相同(相同的列和主键)才能完成。

我想知道的是,有没有办法在数据上下文与当前上下文中的表不同时动态地将新表添加到数据上下文中。

或者是否有可能从实体框架中实现这一目标?

2 个答案:

答案 0 :(得分:1)

我会说不,因为ORM不提供动态运行时模型,它是您查询的数据集的预构建静态模型。

然后,你真正需要做的就是让它变得动态,就是根据你的需要重建它。这将要求您在添加新表或列时调用构建,但这不是不可能的。这可以通过多种方式完成。

但是,如果这是你的问题,你不应该尝试使用像linq-to-sql这样的ORM来解决这个问题。它从来没有为此而建。我还推荐实体框架,因为它已经以各种方式取代了linq-to-sql(并且不再开发linq-to-sql)。

答案 1 :(得分:0)

另一种方法是首先使用EF 4.1代码,您可以动态生成和编译代码并在应用程序域中加载它们。好吧,我认为你也可以使用动态编译EF 4.0,但Edmx和映射很复杂。

它将是新的上下文,您将无法更改现有上下文,但您可能会合并到新的类库中。但是这一切都必须在反射上发生,因为在编译时你不会为linq提供泛型类型。