使用多个连接字符串vb.net的实体框架

时间:2014-11-20 06:32:19

标签: vb.net entity-framework ado.net ado.net-entity-data-model

我正在使用实体框架并且有多个数据库可供使用。我希望不同的用户连接到不同的数据库。在web.config中的连接字符串中,它是这样的。

 <add name="ADBEntities" connectionString="metadata=res://EF_DAL;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;data source=pc:15/xe;password=l;user id=l&quot;" providerName="System.Data.EntityClient" />
 <add name="BDBEntities" connectionString="metadata=res://EF_DAL;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;data source=pc:15/xe;password=2;user id=2&quot;" providerName="System.Data.EntityClient" />

在我的自动生成的model1.context.vb文件中,生成以下内容

Partial Public Class DBEntities
    Inherits DbContext

    Public Sub New()
        MyBase.New("name=DBEntities")
    End Sub

我想做的是能够让用户连接到不同的数据库。我发现自己是一个偏僻的阶级。我试图创建另一个类

Partial Public Class DALEntities
    Inherits DBEntities

    Private Sub New(nameOfConnectionString As String)
        MyBase.New(nameOfConnectionString)
    End Sub
End Class

但是当然它不起作用因为DBEntities没有一个接受参数的New()。有没有办法通过编辑自动生成过程中的设置或以编程方式克服此问题来克服此问题。

2 个答案:

答案 0 :(得分:0)

您可以简单地创建一个直接从DbContext继承的类,而不是自动生成的类。

这假定每个连接字符串引用的数据库模式是相同的。如果不是,就模型而言,还有更多的工作要做。

答案 1 :(得分:0)

似乎在一个单独的类中声明这个方法对我来说是个窍门

部分公共类DBEntities

Private Sub New(nameOfConnectionString As String)
    MyBase.New(nameOfConnectionString)
End Sub

结束班