【问题标题】:SetInitializer for database erring用于数据库错误的 SetInitializer
【发布时间】:2014-02-06 15:27:08
【问题描述】:

我正在尝试转换示例 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 行中 Database 下的蓝色波浪线...

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多