Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中设置运行时的实体框架连接字符串#_C#_Entity Framework - Fatal编程技术网

C# 在C中设置运行时的实体框架连接字符串#

C# 在C中设置运行时的实体框架连接字符串#,c#,entity-framework,C#,Entity Framework,我需要在运行时设置实体框架连接字符串。现在,我有以下几点: string connectionString = "metadata=res://*/DataModels.CustomerDataModel.csdl|res://*/DataModels.CustomerDataModel.ssdl|res://*/DataModels.CustomerDataModel.msl;provider=System.Data.SqlClient;provider connection string=&

我需要在运行时设置实体框架连接字符串。现在,我有以下几点:

string connectionString = "metadata=res://*/DataModels.CustomerDataModel.csdl|res://*/DataModels.CustomerDataModel.ssdl|res://*/DataModels.CustomerDataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=tcp:{serverName},{portNumber};initial catalog={databaseName};user id={username};multipleactiveresultsets=True;application name=EntityFramework"";
using (CustomerEntities entities = new CustomerEntities(connectionString))
{
  CustomerEntity entity = new CustomerEntity();
  // do more
  entities.CustomerEntities.Add(entity);
  entities.SaveChanges();
}
当我执行上面的代码时(替换了{parameter}值),我得到以下错误:

不支持关键字:“数据源”

我做错了什么?

改变这个

string connectionString = "metadata=res://*/DataModels.CustomerDataModel.csdl|res://*/DataModels.CustomerDataModel.ssdl|res://*/DataModels.CustomerDataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=tcp:{serverName},{portNumber};initial catalog={databaseName};user id={username};multipleactiveresultsets=True;application name=EntityFramework"";
对此(请注意我是如何将“字符”转义为“”)


我知道这是10个月前提出的,但我找到了一种更简单的方法来指定connectionString:

如果您的配置文件将其设置为:

<connectionStrings>
<add name="CustomerDataModel" connectionString="metadata=res://*/EntityFramework.CustomerDataModel.csdl|res://*/EntityFramework.CustomerDataModel.ssdl|res://*/EntityFramework.CustomerDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\CustomerDataModel;initial catalog=CustomerDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

无需担心quotes.Lot cleaner。

更易于使用和根据需要更改参数。

在web.config中设置多个连接字符串,并执行以下操作:

public partial class MyDatabaseEntities
{
    public MyDatabaseEntities(string connection)
        : base(connection)
    {
    }
}
然后,无论在何处创建实体实例,都要在参数中传递连接字符串名称:

MyDatabaseEntities entities = new MyDatabaseEntities("CONNECTION_STRING_NAME");
我希望这会有所帮助

谢谢

public partial class MyDatabaseEntities
{
    public MyDatabaseEntities(string connection)
        : base(connection)
    {
    }
}
MyDatabaseEntities entities = new MyDatabaseEntities("CONNECTION_STRING_NAME");