EF5 CodeFirst模式名称

时间:2013-02-15 08:09:34

标签: entity-framework entity-framework-5

我正在开发这个应用程序,我必须在多个模式(在运行时定义)中读取来自多个表(所有具有相同结构)的数据。 使用实体框架5和代码优先方法,我需要一种方法来更改实体的模式名称。 目前我正在使用带有两个参数的构造函数创建我的DbContext,DbConnection和模式名称(我在重写的OnModelCreating中使用)。

我第一次创建DbContext时一切正常,我能够获取数据。但是当我使用第二个模式名称创建一个新的DbContext时,DbContext使用的DbConnection是在construtor中传递的DbConnection,但实体中的模式名称仍然是第一个,因为即使我创建了OnModelCreating也没有被调用DbContext的新实例。

任何想法? 感谢

编辑:不要认为这很重要,但我使用的是Oracle数据库。

2 个答案:

答案 0 :(得分:0)

您可以通过为每个架构(使用默认架构集)和多个连接字符串创建SQL Server用户来执行此操作。

在您的应用程序中,为每个用户(架构)创建一个连接字符串。添加一个接受连接字符串的dbcontext构造函数,然后将相应的连接字符串传递给构造函数。

答案 1 :(得分:0)

您可以通过提供自定义数据库初始化程序(IDatabaseInitializer和Database.SetInitializer(new YouCustomInitializer())来执行某些操作;)