C# app.config:ConnectionString值在其所在的项目中不可见';定义
嗨,我有几个解决方案项目。 在项目A中,我有一个app.config,其连接字符串名为Ver3ConnectionString。但是当我调试时,在代码中找不到连接字符串:)。调试连接字符串时,其中包含一个未在此app.config中定义的字符串,而我的应用中则包含以下字符串:)。我正在使用VS2013 Express:) 此外,应用程序设置是在主项目()中定义的设置,而不是被怀疑的设置 魔法:) 增加:C# app.config:ConnectionString值在其所在的项目中不可见';定义,c#,visual-studio-2013,C#,Visual Studio 2013,嗨,我有几个解决方案项目。 在项目A中,我有一个app.config,其连接字符串名为Ver3ConnectionString。但是当我调试时,在代码中找不到连接字符串:)。调试连接字符串时,其中包含一个未在此app.config中定义的字符串,而我的应用中则包含以下字符串:)。我正在使用VS2013 Express:) 此外,应用程序设置是在主项目()中定义的设置,而不是被怀疑的设置 魔法:) 增加: 该解决方案是由我的同事从现有项目中创建的,因此我正在查找解决方案/项目文件中的错误 Mobi
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="Ver3ConnectionString"
connectionString="Data Source=PAZI-PRO2\SQLEXPRESS;Initial Catalog=MobileWalletVer3;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
调用connsterionString的C代码:
public MobileWalletContext() : base(string.Format("name={0}",ConfigurationManager.ConnectionStrings["Ver3ConnectionString"].ConnectionString))
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MobileWalletContext>());
}
public MobileWalletContext():base(string.Format(“name={0}”,ConfigurationManager.ConnectionString[“Ver3ConnectionString”].ConnectionString))
{
SetInitializer(新的DropCreateDatabaseIfModelChanges());
}
连接字符串的名称不太可能更改。因此,我将上下文构造函数简化为:
public MobileWalletContext() : base("Ver3ConnectionString")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MobileWalletContext>());
}
public mobileewalletcontext():base(“Ver3ConnectionString”)
{
SetInitializer(新的DropCreateDatabaseIfModelChanges());
}
这样,我可以使用Ver3ConnectionString
name在每个项目中定义不同的连接字符串
编辑
DbContext
基本构造函数接受连接字符串名称或完整连接字符串
在您的情况下,您只需使用提供的名称和默认设置创建一个新的连接字符串,而不是引用现有的连接字符串。这就是您看到LocalSqlServer的原因
若您在配置中传递现有连接字符串的名称,它将被拾取并使用
编辑
确保连接字符串位于主项目目录中的
app.config
或web.config
文件中 连接字符串的名称不太可能更改。因此,我将上下文构造函数简化为:
public MobileWalletContext() : base("Ver3ConnectionString")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MobileWalletContext>());
}
public mobileewalletcontext():base(“Ver3ConnectionString”)
{
SetInitializer(新的DropCreateDatabaseIfModelChanges());
}
这样,我可以使用Ver3ConnectionString
name在每个项目中定义不同的连接字符串
编辑
DbContext
基本构造函数接受连接字符串名称或完整连接字符串
在您的情况下,您只需使用提供的名称和默认设置创建一个新的连接字符串,而不是引用现有的连接字符串。这就是您看到LocalSqlServer的原因
若您在配置中传递现有连接字符串的名称,它将被拾取并使用
编辑
确保连接字符串位于主项目目录中的
app.config
或web.config
文件中 连接字符串的名称不太可能更改。因此,我将上下文构造函数简化为:
public MobileWalletContext() : base("Ver3ConnectionString")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MobileWalletContext>());
}
public mobileewalletcontext():base(“Ver3ConnectionString”)
{
SetInitializer(新的DropCreateDatabaseIfModelChanges());
}
这样,我可以使用Ver3ConnectionString
name在每个项目中定义不同的连接字符串
编辑
DbContext
基本构造函数接受连接字符串名称或完整连接字符串
在您的情况下,您只需使用提供的名称和默认设置创建一个新的连接字符串,而不是引用现有的连接字符串。这就是您看到LocalSqlServer的原因
若您在配置中传递现有连接字符串的名称,它将被拾取并使用
编辑
确保连接字符串位于主项目目录中的
app.config
或web.config
文件中 连接字符串的名称不太可能更改。因此,我将上下文构造函数简化为:
public MobileWalletContext() : base("Ver3ConnectionString")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MobileWalletContext>());
}
public mobileewalletcontext():base(“Ver3ConnectionString”)
{
SetInitializer(新的DropCreateDatabaseIfModelChanges());
}
这样,我可以使用Ver3ConnectionString
name在每个项目中定义不同的连接字符串
编辑
DbContext
基本构造函数接受连接字符串名称或完整连接字符串
在您的情况下,您只需使用提供的名称和默认设置创建一个新的连接字符串,而不是引用现有的连接字符串。这就是您看到LocalSqlServer的原因
若您在配置中传递现有连接字符串的名称,它将被拾取并使用
编辑
确保连接字符串位于主项目目录中的
app.config
或web.config
文件中 我想在@Kaspars Ozols所写的内容中添加以下内容:LocalSqlServer是您的SQL Express安装,其配置通常位于machine.config文件中,如
C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config
。您可能有超过1个machine.config[2个运行时(2.0和4.0)]
x[2位(x86和x64)]
生成4个machine.config文件
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
在
或
部分的开头使用
是一个好习惯。
<connectionStrings>
<clear/>
<add name="MembershipConnection" connectionString="Server=.;UId=some_user;PWd=P@$$w0rd;Database=DBName" providerName="System.Data.SqlClient" />
<add name="ElmahConnection" connectionString="Server=.;UId=some_elmah_user;PWd=P@$$w0rd;Database=DBName" providerName="System.Data.SqlClient" />
</connectionStrings>
我想将此添加到@Kaspars Ozols所写的内容中:
LocalSqlServer是您的sqle