1

앱을 제작할 때 여러 가지 방법을 테스트하고 싶습니다 (DB 우선, 모델 우선, 코드 우선). T4Scaffolding을 사용하고 DB 게시 수정에 많은 문제가 발생한 후에도 EF는 유연하지 못했습니다. 이제 나는 아주 이상한 것을 발견했다. Web.Config에 지정된 단일 'DefaultConnection'을두고 솔루션의 App_Data 폴더에있는 단일 .mdf 파일을 가리키고 있습니다. 코드 - 첫 번째 접근법을 사용하여 필자는 엔티티 (클래스)를 생성 한 다음 스캐 폴딩 된 저장소, 컨텍스트, 모든 것이 거의 정상적으로 작동하는 것처럼 보였습니다. 제외하기 전에 저장된 데이터도 제외하고 DB를 업데이트했습니다. 그러나 VS 서버 탐색기를 확인한 후에 데이터베이스에는 ID (사용자, 역할)에 사용되는 테이블 만 포함되어 있으며 실제 데이터베이스가 다른 위치에 있다는 것을 알 수 있습니다. C : \ Users {MyUser} \ AppData \ Local \ Microsoft \ Microsoft SQL Server 로컬 DB \ Instances '에있는 것으로 의심됩니다. 그러나 이미 사용 중이므로 .mdf 파일을 열어 확인할 수 없습니다. 나는 붙어있다. 내 데이터는 어디에 있습니까 ???LocalDB 데이터베이스는 어디에 저장됩니까?

내 응용 프로그램에 두 개의 컨텍스트가 있음을 잊어 버렸으므로 PM 콘솔에서 "어셈블리에서 두 개 이상의 컨텍스트 유형이 발견되었습니다 ..."라는 경고 메시지가 나타납니다.

Howerver는 첫 번째는 'ApplicationDbContext'이며, 그것은 단지 신원 DB를 말합니다

public class ApplicationUser : IdentityUser 
{ 
} 

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection") 
    { 
    } 
} 

을 두 번째 컨텍스트의 Web.config에서 해당 단일 DB 연결에 바인딩, 그리고 비즈니스 로직 개체가 있습니다

+0

MS 서버에서 사용하는 .mdf를 열려면 먼저 서비스에서 SQL 서버 서비스를 종료하십시오. 또한 Management Studio를 열고 db의 속성을보고 instf를 사용하면 mdf가 저장되는 위치를 찾을 수 있습니다. – apomene

+0

하지만 'open'이라고 말하면 SQL 연결을 사용하는 서버 탐색기에서 서버가 중지 될 수 없음을 의미합니다. –

+0

Server Explorer? ... 클라이언트 프로그램을 언급하고 있습니까? – apomene

답변

1

조금 이상합니다. 연결 문자열은 Web.Config에서 가져오고 거기에 있어야합니다. 다시 확인하십시오. 또한 기본적으로 EF는 App_Data 폴더에 데이터베이스를 만듭니다. 그래서 그 폴더를 검색 할 수 있습니다. 또한 여러 컨텍스트로 작업하는 것이 불편한 경우에는 모든 DbSets를 ApplicationDbContext로 복사하면됩니다.

편집 : 기본 클래스의 생성자를 호출하면, 우리는 연결 문자열의 이름을 통과 할 수있는 동안 여기

namespace MvcProject 
{  
    public class NorthwindDb : DbContext  
    {   
     public NorthwindDb() : 
      base("DefaultConnection") {} 
    } 
} 

: 당신이 좋아하는 다른 상황에 대해 동일한 CS를 지정할 수 있습니다 . 기본적으로 Identity는 DefaultConnection을 사용하며 이것을 우리의 컨텍스트로 설정할 수 있습니다.

+0

확인했지만 새로운 것은 없습니다. App_Data의 db 파일은 Server Explorer와 동일하며 Web.Config의 db 파일과 동일합니다. 전체 솔루션에는 다른 connectionString 속성이 없습니다. 하지만 그 db 파일에는 Identity 테이블 만 있습니다. –

+0

다른 컨텍스트 연결 문자열을 DefaultConnection을 가리 키도록 변경하십시오. –

+0

그러나 Web.Config에 없으면 지정된 컨텍스트의 연결 문자열은 어디에 있습니까? –

관련 문제