我正在开发这个应用程序,其中我必须从多个模式(在运行时定义)的多个表(都具有相同的结构)中读取数据。通过代码优先的方法使用实体框架5,我需要一种方法来更改实体的模式名称。目前,我正在使用一个带有两个参数的构造函数创建我的DbContext,一个DbConnection和模式名(我在被覆盖的OnModelCreating中使用)。
我第一次创建DbContext时,一切运行正常,并且我能够获得数据。但是当我用第二个模式名创建一个新的DbContext时,DbContext使用的DbConnection是传递到构造函数中的那个,但是实体中的模式名仍然是第一个,因为即使我正在创建一个新的DbContext实例,OnModelCreating也不会被调用。
有什么想法吗?谢谢
发布于 2013-02-15 16:40:41
为此,您可以为每个架构(使用默认架构集)创建一个SQL Server用户和多个连接字符串。
在您的应用程序中,为每个用户(架构)创建一个连接字符串。添加一个接受连接字符串的dbcontext构造函数,然后将适当的连接字符串传递给该构造函数。
发布于 2013-02-15 17:17:37
您可以通过提供一个自定义的数据库初始化器(IDatabaseInitializer和Database.SetInitializer(新的YouCustomInitializer());)
https://stackoverflow.com/questions/14890488
复制相似问题