如何使用控制台应用程序中 Main 函数的参数设置 app.config 中的连接字符串的值
How to set value of connection string in app.config using an argument from Main function in console app
我有一个使用 entity framework 的 C# 控制台应用程序。在应用程序配置文件中,我定义了连接字符串
<connectionStrings>
<add name="DefaultConnection" connectionString="Provider=Microsoft.ACE.OleDb.12.0;Data source={argument from Main function}" providerName="JetEntityFrameworkProvider" />
</connectionStrings>
我的context.cs
public class SinergyContext : DbContext
{
public SinergyContext() : base("name=DefaultConnection") { }
public DbSet<RejectedData> RejectedErrors { get; set; }
}
我的Program.cs
static void Main(string[] args)
{
// arg[0] contains the connection string data source
是否可以在 Program.cs 文件中设置连接字符串?
您可以使用ConfigurationManager.ConnectionStrings
获取应用配置的ConnectionString
示例:
system.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
或者创建上下文并获取其属性
context = new SinergyContext();
更改您的 DBContext 以接受自定义连接字符串:
public class SinergyContext : DbContext
{
public SinergyContext(string cs) : base(cs) { }
public DbSet<RejectedData> RejectedErrors { get; set; }
}
然后通过以下方式实例化它:
var db = new SinergyContext("my connection string");
如果您必须使用提供商,您可以使用 EntityConnectionStringBuilder
:
var builder = new EntityConnectionStringBuilder
{
Provider = "JetEntityFrameworkProvider",
ProviderConnectionString = $"Provider=Microsoft.ACE.OleDb.12.0;Data source={args[0]}"
};
var db = new SinergyContext(builder.ToString());
最后我找到了一种使用 c# 将值传递给 app.config 的方法(在 main.cs 文件中)。
方法如下:
static void Main(string[] args)
{
Configuration config = ConfigurationManager
.OpenExeConfiguration(System.Reflection.Assembly.GetExecutingAssembly().Location);
ConnectionStringsSection section =
(ConnectionStringsSection)config.GetSection("connectionStrings");
section.ConnectionStrings["DefaultConnection"].ConnectionString += args[0];
config.Save();
}
我有一个使用 entity framework 的 C# 控制台应用程序。在应用程序配置文件中,我定义了连接字符串
<connectionStrings>
<add name="DefaultConnection" connectionString="Provider=Microsoft.ACE.OleDb.12.0;Data source={argument from Main function}" providerName="JetEntityFrameworkProvider" />
</connectionStrings>
我的context.cs
public class SinergyContext : DbContext
{
public SinergyContext() : base("name=DefaultConnection") { }
public DbSet<RejectedData> RejectedErrors { get; set; }
}
我的Program.cs
static void Main(string[] args)
{
// arg[0] contains the connection string data source
是否可以在 Program.cs 文件中设置连接字符串?
您可以使用ConfigurationManager.ConnectionStrings
获取应用配置的ConnectionString
示例:
system.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
或者创建上下文并获取其属性
context = new SinergyContext();
更改您的 DBContext 以接受自定义连接字符串:
public class SinergyContext : DbContext
{
public SinergyContext(string cs) : base(cs) { }
public DbSet<RejectedData> RejectedErrors { get; set; }
}
然后通过以下方式实例化它:
var db = new SinergyContext("my connection string");
如果您必须使用提供商,您可以使用 EntityConnectionStringBuilder
:
var builder = new EntityConnectionStringBuilder
{
Provider = "JetEntityFrameworkProvider",
ProviderConnectionString = $"Provider=Microsoft.ACE.OleDb.12.0;Data source={args[0]}"
};
var db = new SinergyContext(builder.ToString());
最后我找到了一种使用 c# 将值传递给 app.config 的方法(在 main.cs 文件中)。 方法如下:
static void Main(string[] args)
{
Configuration config = ConfigurationManager
.OpenExeConfiguration(System.Reflection.Assembly.GetExecutingAssembly().Location);
ConnectionStringsSection section =
(ConnectionStringsSection)config.GetSection("connectionStrings");
section.ConnectionStrings["DefaultConnection"].ConnectionString += args[0];
config.Save();
}