【问题标题】:Non-conforming initialization string, index 0不符合的初始化字符串,索引 0
【发布时间】:2016-10-24 03:19:27
【问题描述】:

我正在尝试在 NuGet 中生成新的迁移脚本。输入add-migration Initial 后会生成以下响应。注意:我的项目仍然可以编译并运行,没有错误...

    PM> add-migration Initial
System.ArgumentException: Format of the initialization string does not conform to specification starting at index 0.
   at System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue)
   at System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey)
   at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules)
   at System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)
   at MySql.Data.MySqlClient.MySqlConnectionStringBuilder..ctor(String connStr)
   at MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString(String value)
   at MySql.Data.MySqlClient.MySqlConnection..ctor(String connectionString)
   at MySql.Data.Entity.MySqlConnectionFactory.CreateConnection(String connectionString)
   at System.Data.Entity.Internal.LazyInternalConnection.Initialize()
   at System.Data.Entity.Internal.LazyInternalConnection.get_Connection()
   at System.Data.Entity.Internal.LazyInternalContext.get_Connection()
   at System.Data.Entity.Infrastructure.DbContextInfo..ctor(Type contextType, DbProviderInfo modelProviderInfo, AppConfig config, DbConnectionInfo connectionInfo, Func`1 resolver)
   at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext, DatabaseExistenceState existenceState, Boolean calledByCreateDatabase)
   at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration)
   at System.Data.Entity.Migrations.Design.MigrationScaffolder..ctor(DbMigrationsConfiguration migrationsConfiguration)
   at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run()
   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
   at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
   at System.Data.Entity.Migrations.Design.ToolingFacade.Scaffold(String migrationName, String language, String rootNamespace, Boolean ignoreChanges)
   at System.Data.Entity.Migrations.AddMigrationCommand.Execute(String name, Boolean force, Boolean ignoreChanges)
   at System.Data.Entity.Migrations.AddMigrationCommand.<>c__DisplayClass2.<.ctor>b__0()
   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Format of the initialization string does not conform to specification starting at index 0.

我一直按照这个问题的指南来建立与我的 Google Cloud SQL 服务器的连接: Dynamic MySQL database connection for Entity Framework 6

我的连接字符串:

    <add name="CCGamesGCloud.EntityFramework.Context" connectionString="Server=******;Database=*****;Uid=****;Pwd=*********"
  providerName="MySql.Data.MySqlClient" />

我的 EF 字符串:

<entityFramework>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
    </providers>
  </entityFramework>

上下文类:

public class Context : DbContext
{
    public Context() : base("CCGamesGCloud.EntityFramework.Context")
    {

    }

    public virtual DbSet<Developer> Developers { get; set; }
    //... etc. etc... for all DBSets

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<Developer>();
        // other calls... etc here
    }
}

Web.config XML 第一行:

<?xml version="1.0" encoding="utf-8"?>

我已将必要的 MySQL dll 添加到解决方案参考中。与该主题的许多其他问题一样,我的字符串中没有任何拼写错误。

【问题讨论】:

  • 你能展示context类吗?
  • 根据请求添加。
  • 你能显示web.config文件的第一行吗?我的意思是&lt;?xml version="1.0" ......
  • 根据请求添加。
  • 你找到解决办法了吗?

标签: .net entity-framework nuget-package


【解决方案1】:

我正在使用的迁移设置已初始化为针对本地 sql 实例。抛出不可接受的字符串格式错误,因为我使用的连接字符串用于 MySQL 协议,而不是常规 SQL。

我强制重新启用专门针对我的自定义上下文的迁移。这样做可以防止错误发生,因为 Migrations 现在需要 MySQL 上下文和连接字符串。

我用过:

Enable-Migrations -ContextTypeName MYCONTEXT -Force

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2015-05-01
    相关资源
    最近更新 更多