1

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

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

有什么想法吗?谢谢

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

4

2 回答 2

0

您可以通过为每个架构(使用默认架构集)和多个连接字符串创建一个 SQL Server 用户来做到这一点。

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

于 2013-02-15T08:40:40.683 回答
0

您可以通过提供自定义数据库初始化程序(IDatabaseInitializer 和 Database.SetInitializer(new YouCustomInitializer());) 来做一些事情

于 2013-02-15T09:17:37.107 回答