C# 异常:System.ArgumentException:不支持关键字:';初始目录';将连接字符串硬编码到dbcontext时

C# 异常:System.ArgumentException:不支持关键字:';初始目录';将连接字符串硬编码到dbcontext时,c#,C#,我首先将连接字符串硬编码到实体框架DB的dbcontext public MirrorBranchesEntities(string connectionStringName, string db) : base(@"name=" + connectionStringName + " connectionString=metadata=res://*/MirrorBranches.csdl|res://*/MirrorBranches.ssdl|res://*/MirrorBra

我首先将连接字符串硬编码到实体框架DB的dbcontext

public MirrorBranchesEntities(string connectionStringName, string db)
        : base(@"name=" + connectionStringName + " connectionString=metadata=res://*/MirrorBranches.csdl|res://*/MirrorBranches.ssdl|res://*/MirrorBranches.msl;provider=System.Data.SqlClient;provider connection string=data source=(local);initial catalog=" + db + ";user id=sa;password=Qwer0987;MultipleActiveResultSets=True;App=EntityFramework; providerName=System.Data.EntityClient")
    {
    }
有多个数据库使用该连接字符串。问题是它正在返回一个异常

System.ArgumentException:不支持关键字:“初始目录”。 位于System.Data.Entity.Core.EntityClient.Internal.DbConnectionOptions.ParseInternal(哈希表parsetable、字符串connectionString、哈希表同义词) 位于System.Data.Entity.Core.EntityClient.Internal.DbConnectionOptions..ctor(字符串连接字符串,哈希表同义词) 位于System.Data.Entity.Core.EntityClient.EntityConnection.ChangeConnectionString(字符串newConnectionString) 位于System.Data.Entity.Core.EntityClient.EntityConnection..ctor(字符串连接字符串) 在System.Data.Entity.Internal.LazyInternalConnection.Initialize()中 位于System.Data.Entity.Internal.LazyInternalConnection.CreateObjectContextFromConnectionModel()处 在System.Data.Entity.Internal.LazyInternalContext.InitializeContext()中 位于System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(类型entityType) 在System.Data.Entity.Internal.Linq.InternalSet
1.Initialize()处
位于System.Data.Entity.Internal.Linq.InternalSet
1.get_InternalContext() 在System.Data.Entity.Internal.Linq.InternalSet
1.ActOnSet(操作操作,EntityState新闻状态,对象实体,字符串方法名)
在System.Data.Entity.Internal.Linq.InternalSet中添加(对象实体)
at System.Data.Entity.DbSet`1.Add(TEntity实体)

更新

我已经更新了连接字符串——去掉了double元数据属性并删除了一个额外的单引号

我试图将连接字符串放入
EntityConnectionStringBuilder
中,但无法将其插入上下文中

public static MirrorBranchesEntities ConnectToSqlServer(string catalog)
    {
        var sqlBuilder = new SqlConnectionStringBuilder
        {

            DataSource = "(local)",
            InitialCatalog = catalog,
            PersistSecurityInfo = true,
            IntegratedSecurity = true,
            MultipleActiveResultSets = true,

            UserID = "sa",
            Password = "Qwer0987"
        };

        var entityConnectionStringBuilder = new EntityConnectionStringBuilder
        {
            Provider = "System.Data.EntityClient",
            ProviderConnectionString = sqlBuilder.ConnectionString,
            Metadata = "res://*/MirrorBranches.csdl|res://*/MirrorBranches.ssdl|res://*/MirrorBranches.msl", 

        };

        return new MirrorBranchesEntities(entityConnectionStringBuilder.ConnectionString, sqlBuilder.InitialCatalog);
    }

然后我将我的上下文更改为
base(ConnectToSqlServer(connectionStringName,db))
,但它显示的参数无效。

请检查您的值。在您的示例中,有两个
元数据=
表达式。还可以尝试在字符串中使用引号:

base("name=" + connectionStringName + "connectionString='metadata=res://*/MirrorBranches.csdl|res://*/MirrorBranches.ssdl|res://*/MirrorBranches.msl;provider=System.Data.SqlClient;provider connection string=data source=(local);initial catalog=" + db + ";user id=sa;password=Qwer0987;MultipleActiveResultSets=True;App=EntityFramework'"; providerName=System.Data.EntityClient")

使用
字符串检查重构。Join(;”,
应该减少一些complexity@BinkanSalaryman我会试试看。@BinkanSalaryman Nope,它不起作用。@J.PMasangcay我不是一个建议的解决方案,而是一个建议,可以将长连接字符串分解为多行-在相应地应用它时,它相当于你的绳子。是的,我已经把它们去掉了。但它仍然给了我最初的目录错误。我会更新我的连接字符串,里面的附加引号呢?是的,也去掉了。除了ConcationsStills没有任何成功?没有,我甚至从初始目录中删除了“initial”,但仍然没有成功。你怎么认为?