您好我在解决方案中有一些项目。 在项目A中,我有app.config,其连接字符串名为Ver3ConnectionString。但是当我进行调试时,在代码中找不到连接字符串:)。虽然调试连接字符串包含一个未在此app.config中定义的连接字符串,但在我的应用程序中为nether :)。我正在使用VS2013 Express:)。
此外,applicationSettings是在主项目:)中定义的,但不是一个被dubugged的。
魔术:)
。增加:
这个解决方案是我的同事从现有项目创建的,所以我在解决方案/项目文件中寻找错误。
MobileWalletContext类与EntityFramework 6.X连接。也许这就是问题?
新增2: 此未知连接字符串具有 name =" LocalSqlServer" 。也许这会有所帮助?
App.config中:
<?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>());
}
答案 0 :(得分:3)
连接字符串的名称不太可能改变。因此,我会将上下文构造函数简化为:
public MobileWalletContext() : base("Ver3ConnectionString")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MobileWalletContext>());
}
这样我就可以使用Ver3ConnectionString
名称在每个项目中定义不同的连接字符串。
修改强>
DbContext
基础构造函数接受连接字符串名称或完整连接字符串。
在您的情况下,您只需创建一个具有提供的名称和默认设置的新连接字符串,而不是引用现有的连接字符串。这就是你看到LocalSqlServer的原因。
如果您在配置中传递现有连接字符串的名称,它将被选中并使用。
修改强>
确保您的连接字符串位于主项目目录中的app.config
或web.config
文件中。
答案 1 :(得分:0)
我想将此添加到@ Kaspars-Ozols所写的内容中:
LocalSqlServer是您的SQL Express安装,其配置通常驻留在像C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
这样的machine.config文件中。您可能有多个machine.config [2 runtimes (2.0 and 4.0)]
x [2 Bitness (x86 and 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>
在<clear />
或<appSettings>
部分的最开始使用<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>