给出了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之一 - 非常感谢。
答案 0 :(得分:0)
我不这么认为,因为Up方法的作用是填充Operations
集合,DbMigrator
类实际执行这些操作。因此,在调用up时没有“上下文”。
您可以做的是直接通过ConfigurationManager
课程获取连接字符串