用于数据库错误的SetInitializer

时间:2014-02-06 15:27:09

标签: mysql asp.net vb.net entity-framework

我正在尝试转换示例ASP.Net帖子; ASP.NET标识:使用MySQL存储与EntityFramework MySQL提供程序(C#) Project found here

以下代码来自样本

 public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
  static ApplicationDbContext()
  {
      Database.SetInitializer(new MySqlInitializer());
  }

  public ApplicationDbContext()
    : base("DefaultConnection")
  {
  }
}  

这将转换为vb.net,如下所示

Public Class ApplicationDbContext
Inherits IdentityDbContext(Of ApplicationUser)
Shared Sub New()
            'the code is erring here on the next line
    Database.SetInitializer(New MySqlInitializer())
End Sub

Public Sub New()
    MyBase.New("DefaultConnection")
End Sub

结束班

Initializer类如下

Public Class MySqlInitializer
    Implements IDatabaseInitializer(Of ApplicationDbContext)

    Public Sub InitializeDatabase(context As ApplicationDbContext) Implements IDatabaseInitializer(Of ApplicationDbContext).InitializeDatabase
        If Not context.Database.Exists() Then               
            context.Database.Create()
        Else

            Dim migrationHistoryTableExists = DirectCast(context, IObjectContextAdapter).ObjectContext.ExecuteStoreQuery(Of Integer)(String.Format("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0}' AND table_name = '__MigrationHistory'","connstring"))

            If migrationHistoryTableExists.FirstOrDefault() = 0 Then
                context.Database.Delete()
                context.Database.Create()
            End If
        End If
    End Sub

代码在Database.SetInitializer(New MySqlInitializer())代码行中犯​​了错误

错误31262如果没有类的显式实例,则无法从共享方法或共享成员初始值设定项中引用类的实例成员。 C:\ WebAppTemplate \ AspNetIdentityTemplate_MySql \ AspNetIdentityTemplate_MySql \ Models \ IdentityModels.vb 14 9 AspNetIdentityTemplate_MySql

数据库中DataBase.SetInitializer ...

下的蓝色波浪形

我所有纠正的尝试都会导致相同或其他错误。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

该帖子在其中一个代码示例中包含错误。

突出显示的行对应于该string.Format方法的参数,但该参数应该是数据库模式名称,而不是连接字符串。

如果您有一个名为users的数据库,那么您应该在此指定"users"

enter image description here enter image description here