2014-12-26 4 views
1

n-tire 솔루션에서 데이터 액세스를 처리하기 위해 Repository.EF라는 프로젝트 호출을 만들었습니다. 나는 모든 POCO가있는 Repository.EF 프로젝트에 EF를 추가했습니다. 그런 다음이 프로젝트에서 DbContext 클래스를 만들었습니다. 연결 문자열은 어디에 있습니까?

namespace LearningSpike.Repositories.EF 
{ 
class GlassContractDbContext:DbContext 
    { 
    public GlassContractDbContext() : base("GlassContractContext") 
    { 
    } 

    public DbSet<MetalStock> MetalStock { get; set; } 


    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
     modelBuilder.Configurations.Add(new MetalStockConfiguration()); 
    } 
} 

그런 다음 관리자 콘솔을 패키지로 가서
Enable-Migrations 

을 한 다음

Update-Database 

모든 것이 잘 작동 그런 다음

AutomaticMigrationsEnabled = true; 

을 설정합니다. 하지만 문제는 연결 문자열이 어디에 있는지 모르겠습니다. 특정 프로젝트에 connectionString이없는 것 같습니다. MVC4/5 템플릿이 있다면 web.config에 connectionString이있을 것입니다. 어떻게 연결 문자열을 찾을 수 있습니까? 지금 어떻게 구성합니까? 예를 들어 MVC5 앱에서 connectionString을 사용하여 이것을 기억합니다.

MultipleActiveResultSets=true 

어떻게 할 수 있습니까?

감사합니다. 건배!

PS 또한

나는이 내의 App.config에 다음 코드 Repository.EF 프로젝트

<?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> 
+0

연결 문자열은 웹 프로젝트의 web.config에 있어야합니다. – InferOn

+1

안녕하세요, 빠른 답장을 보내 주셔서 감사합니다. 그러나 문제는이 프로젝트에 web.config가 없다는 것입니다. 이 프로젝트는 모든 POCO가있는 클래스 라이브러리 일뿐입니다. 그래서 그것에 EF를 추가했습니다. 이 레이어를 별도로 유지하고 데이터 액세스 용으로 사용하는 것이 좋습니다. –

+0

별도의 클래스 라이브러리가 작동하기 위해 일부 응용 프로그램에로드되므로 '호스트'응용 프로그램의 연결 문자열을 사용하게됩니다. – Fedor

답변

1

패키지 관리자 콘솔을 실행하는가 시작 프로젝트를 사용하는 기본 설정됩니다 (명령에 -project param을 지정하거나 콘솔 매니저에서 드롭 다운을 사용하지 않는 한). 거기에서 그 프로젝트의 설정 파일에있는 연결 문자열을 찾을 것입니다. 웹 프로젝트라면 web.config에 있습니다.

해당 프로젝트에 고유 한 연결 문자열을 추가하지 않은 경우 EF는 프로젝트 이름에서 파생 된 자체 문자열을 사용하고 런타임 중에 즉시 첨부하는 mdf 파일을 만들 수 있습니다.

연결 문자열을 추가하려는 경우 (구성 파일 중 하나 일 수 있지만 데이터 사운드 프로젝트의 app.config에 추가하려는 사운드로 설정 파일을 추가 할 수 있음) 아래에 추가 할 수 있습니다 귀하의 구성 섹션 :

<connectionStrings> 
<add name="MyDatabase" 
    providerName="System.Data.SqlClient" 
    connectionString="Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"/> 
</connectionStrings> 
+0

답장을 보내 주셔서 감사합니다. 드롭 다운 목록을 사용하여 프로젝트를 변경 했으므로 모든 마이그레이션 폴더와 항목이 원하는 프로젝트의 올바른 위치에 있습니다. 내 연결 문자열을 어떻게 추가합니까? –

+0

다른 프로젝트의 연결 문자열 이름과 프로젝트 이름을 지정할 수 있지만 원하는 경우 데이터 계층에 마이그레이션을 유지하십시오. 예. update-database -project "learningspike.web"-connectionstringname "GlassContract" – Matt

+0

자세히 설명해 주시겠습니까? 문제를 일으켜서 미안 해요. 나는 당신의 개념을 이해합니다. 어떻게해야합니까? –

관련 문제