코드를 통해 EF 6.1.2를 사용하여 내 앱을 작성했습니다. "데이터베이스 업데이트"명령을 입력하면 Microsoft SQL Server 2017에서 데이터베이스가 생성되었습니다. 지금까지는 그렇게 좋았습니다. 그러나 내 app.config 클래스 라이브러리에서 내 데이터베이스에 연결 문자열을 본 적이. 그것은 단지 거기에 없지만, 놀랍게도 저에게는 효과적입니다. 그것은 내 로컬 서버에 완벽하게 연결합니다.EF 코드에서 "보이지 않는"연결 문자열을 우선 무시하는 방법은 무엇입니까?
이제 데이터베이스를 클라우드로 이동 했으므로 연결 문자열이 생겼습니다. 복사 - 연결 문자열을 app config에 붙여 넣었지만 여전히 초기 서버를 가리 킵니다.
내의 app.config는 다음과 같습니다 다음 DBContext를
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!--For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468-->
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
I tried putting the connection string but it takes no effect. It still points to the local server. I have even deleted everything, and pasted my connection string but no success.
Any ideas of how to add my connection string so that it will point to the database from the cloud?
**UPDATE**:
The web.config as Roman requested. I have put the connection string there but it makes no difference (yes I am am aware of the 'X'-s, I don't wanna share the database :-)):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<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="freeaspconnection" connectionString="Server=XXXX;Database=XXXXXX;uid=liviusosu;pwd=;" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="NumberOfUserTasksPerPage" value="7" />
<add key="NumberOfArticlesPerPage" value="10" />
<add key="NumberOfCoursesPerPage" value="10" />
<add key="NumberOfJobAnnouncementsPerPage" value="30" />
<add key="NumberOfInterviewQuestionsPerPage" value="30" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" maxRequestLength="1048576" />
<authentication mode="Forms">
<forms loginUrl="User/LogIn" timeout="300" />
</authentication>
</system.web>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
을 그리고 여기
public class CareerTrackContext : DbContext
{
public CareerTrackContext()
: base("CareerTrack")
{
}
public DbSet<User> Users { get; set; }
public DbSet<Article> Articles { get; set; }
public DbSet<UserTask> UserTasks { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<Company> Companies { get; set; }
public DbSet<Course> Courses { get; set; }
public DbSet<Book> Books { get; set; }
public DbSet<Review> Reviews { get; set; }
public DbSet<Location> Locations { get; set; }
public DbSet<JobAnnouncement> JobAnnouncements { get; set; }
public DbSet<Skill> Skills { get; set; }
public DbSet<InterviewQuestion> InterviewQuestions { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
modelBuilder.Properties()
.Where(p => p.Name == p.ReflectedType.Name + "Id")
.Configure(p => p.IsKey());
modelBuilder.Properties<string>()
.Configure(p => p.HasColumnType("varchar"));
modelBuilder.Properties<string>()
.Configure(p => p.HasMaxLength(1000));
modelBuilder.Entity<JobAnnouncement>()
.HasMany(c => c.Skills).WithMany(i => i.JobAnnouncements)
.Map(t => t.MapLeftKey("JobAnnouncementId")
.MapRightKey("SkillId")
.ToTable("JobAddsSkills"));
modelBuilder.Configurations.Add(new UserConfiguration());
modelBuilder.Configurations.Add(new ArticleConfiguration());
modelBuilder.Configurations.Add(new UserTaskConfiguration());
modelBuilder.Configurations.Add(new RoleConfiguration());
modelBuilder.Configurations.Add(new CompanyConfiguration());
modelBuilder.Configurations.Add(new CourseConfiguration());
modelBuilder.Configurations.Add(new BookConfiguration());
modelBuilder.Configurations.Add(new ReviewConfiguration());
modelBuilder.Configurations.Add(new LocationConfiguration());
modelBuilder.Configurations.Add(new JobAnnouncementConfiguration());
modelBuilder.Configurations.Add(new SkillConfiguration());
modelBuilder.Configurations.Add(new IntreviewQuestionConfiguration());
base.OnModelCreating(modelBuilder);
}
public override int SaveChanges()
{
foreach (var entry in ChangeTracker.Entries().Where(entry => entry.Entity.GetType().GetProperty("DateRegistered") != null))
{
if (entry.State == EntityState.Added)
{
entry.Property("DateRegistered").CurrentValue = DateTime.Now;
}
if (entry.State == EntityState.Modified)
{
entry.Property("DateRegistered").IsModified = false;
}
}
foreach (var entry in ChangeTracker.Entries().Where(entry => entry.Entity.GetType().GetProperty("DateAdded") != null))
{
if (entry.State == EntityState.Added)
{
entry.Property("DateAdded").CurrentValue = DateTime.Now;
}
if (entry.State == EntityState.Modified)
{
entry.Property("DateAdded").IsModified = false;
}
}
foreach (var entry in ChangeTracker.Entries().Where(entry => entry.Entity.GetType().GetProperty("IsActive") != null))
{
if (entry.State == EntityState.Added)
{
entry.Property("IsActive").CurrentValue = true;
}
}
foreach (var entry in ChangeTracker.Entries().Where(entry => entry.Entity.GetType().GetProperty("IsRead") != null))
{
if (entry.State == EntityState.Added)
{
entry.Property("IsRead").CurrentValue = false;
}
}
foreach (var entry in ChangeTracker.Entries().Where(entry => entry.Entity.GetType().GetProperty("Status") != null))
{
if (entry.State == EntityState.Added)
{
entry.Property("Status").CurrentValue = "New";
}
}
return base.SaveChanges();
}
}
내가 피하기 위해 제어를하는 것을 선호하지만
[코드 첫 번째 DbContext에 연결 문자열 전달] (https://stackoverflow.com/q/4805094/102937) –
응용 프로그램의 종류는 무엇입니까? 연결 문자열은 실행 가능한 프로젝트의 설정 파일에서 가져옵니다. 따라서 웹 응용 프로그램 인 경우 app.config가 아닌 web.config에서 연결 문자열을 가져옵니다. –
@RobertHarvey, 그렇지 않습니다. 연결 문자열을 찾을 수 없습니다. 그것은 어딘가에 있어야합니다. :-) –