在运行时使用 C# 设置实体框架连接字符串
本文关键字:实体 框架 连接 字符串 设置 运行时 | 更新日期: 2023-09-27 17:57:08
我需要在运行时设置实体框架连接字符串。现在,我有以下内容:
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();
}
当我执行上面的代码(替换了{参数}值)时,出现以下错误:
不支持关键字:"数据源"。
我做错了什么?
更改此设置。
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"";
对此(请注意我如何将" 字符转义为 ")
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="data source=.'CustomerDataModel;initial catalog=CustomerDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
您可以将其指定为 -
public const string ConnectionString = @"name=CustomerDataModel";
..
CustomerDBContext context = new CustomerDBContext(ConnectionString );
无需担心报价。干净多了。
使用 EntityConnectionStringBuilder 和 SqlConnectionStringBuilder 根据需要更改参数更容易。
在
web.config中设置多个连接字符串,并执行以下操作:
public partial class MyDatabaseEntities
{
public MyDatabaseEntities(string connection)
: base(connection)
{
}
}
然后在要创建实体实例的任何位置,在参数中传递连接字符串名称:
MyDatabaseEntities entities = new MyDatabaseEntities("CONNECTION_STRING_NAME");
我希望这会有所帮助。
谢谢