我如何获得当前连接

时间:2014-08-10 14:52:50

标签: asp.net-mvc vb.net entity-framework migration

给出了Scenratio:

我们使用Asp.net MVC和Entity Framework Code First构建了一个Web应用程序,它为每个客户动态构建数据库。

给定连接字符串(connectionStr)和某个配置,我们创建了Add Migrations [Name]以创建空迁移,该迁移具有空Up功能。我们是故意这样做的。

我们不想在这里使用自动迁移 - 我们希望完全控制,因此我们有一个程序使用DbMigrator类进行迁移。

我们的目标是在此Up函数中运行手动种子。

这是进行迁移的一些代码,它确实非常有效:

Dim myConfiguration As New SomeNamespace.Migrations.Config1.Configuration
myConfiguration.TargetDatabase = New Infrastructure.DbConnectionInfo(connectionStr, "System.Data.SqlClient")

Dim dbMig As New Entity.Migrations.DbMigrator(myConfiguration)
If dbMig.GetPendingMigrations.Count > 0 Then
  dbMig.Update() ' This makes the Up function work - the problem is inside it.
End If

问题:

问题是当运行Migration的Up函数时,我们无法获取数据库上下文。我们需要它来制作种子。

我们希望有一种方法可以获得用于启动DbMigration(dbMig)实例的配置对象( myConfiguration )或其他方式,这样我们就可以获得数据库上下文(也许以某种方式得到ConnectionString。

帮助访问配置对象/数据库上下文/ ConnectionString之一 - 非常感谢。

1 个答案:

答案 0 :(得分:0)

我不这么认为,因为Up方法的作用是填充Operations集合,DbMigrator类实际执行这些操作。因此,在调用up时没有“上下文”。

您可以做的是直接通过ConfigurationManager课程获取连接字符串