2014-10-23 1 views
2

EF6 코드 우선 및 MVC5를 사용하면 ASP.Identity와 관련된 모든 모델, 뷰 및 컨트롤러를 자체 클래스 라이브러리 프로젝트에 넣을 수 있습니까? 그래서 여러 웹 응용 프로그램에서 동일한 DLL을 사용할 수 있고 이미 모든보기/컨트롤러/모델을 보유하고 여러 응용 프로그램에 동일한 보안 데이터베이스를 사용하고 있습니까?Entity Framework 6 별도의 프로젝트에서 ID 사용자 모델을 사용하여 코드 첫 번째 마이그레이션

우리는 별도의 데이터베이스와 모든 보안 데이터베이스를 다루는 여러 웹 애플리케이션을 보유하고 있으며, EF6 코드 우선 및 MVC5로 이동하면서이 모델을 유지하는 방법을 알지 못했습니다.

다른 누군가가 나에게 비슷한 내용의 튜토리얼을 가르쳐 주거나 통과 할 단계에 대한 기본 개요를 제공 할 수 있습니까?

또는 여러 가지 웹 응용 프로그램에 해당 DLL을 연결하고 동일한 논리 및 데이터베이스를 얻을 수있는 ASP.NET-Identity 보안을 처리하는 코드 세트가있는 더 나은 방법이 있다면?

아니면 일반적으로 좋은 생각이 아닌가요?

제안 및 조언이 매우 필요합니다. 감사합니다.

답변

3

예입니다. 우리는 우리가 가진 모든 프로젝트에이 작업을 수행합니다. 구조는 매우 간단합니다. 솔루션에 클래스 라이브러리 프로젝트를 만들고 프로젝트에 EF를 추가 한 다음 기본 프로젝트에서 클래스 라이브러리를 참조하십시오.

코드 첫 번째 마이그레이션을 사용하는 경우 마이그레이션을 실행하거나 마이그레이션을 추가 할 때 패키지 관리자 콘솔에서 기본 프로젝트로 클래스 라이브러리 프로젝트를 선택해야합니다.

여기, 솔루션

MySolution 
    - MyWebApp 
    reference: MyDAL 
    -MyDAL 
    reference: EF6 

나는이에 발견하면 다음 동반자 콘솔 응용 프로그램 또는 Windows 말에서 'DAL'클래스 라이브러리를 참조 할 수 있다는 것입니다 응용 프로그램을 형성 장점에 대한 의사 솔루션 구조 또는 컴패니언 웹 사이트를 다른 솔루션에서도 사용할 수 있으며 동일한 코드 기반을 사용합니다. 예를 들어

:

MySolution 
    - MyWebApp 
    reference: MyDAL 
    - MyDAL 
    reference: EF6 
    - MyOtherWebApp 
    reference: MyDAL 

참고 : 귀하의 데이터 컨텍스트가 시작 프로젝트의 Web.config 또는의 App.config에서의 연결 문자열을 찾습니다. 클래스 라이브러리. 처음에는 혼란 스러울 수 있습니다. 그러나 .NET이 응용 프로그램을 최종 패키지로 컴파일하는 방법에 대해 생각한 후에는 의미가 있습니다.

+0

감사합니다. 내가 가지고 있었던 가장 큰 두 가지 문제점은 마이그레이션과 보안 데이터베이스의 연결 문자열을 어디에 넣어야하는지였습니다. 자세히 설명하기에 앞서 EF 및 ASP에 익숙하지 않았기 때문에 내가하고있는 일이 최선의 방법인지 확인하고 싶었습니다. 신원. 연결 문자열 문제로 마이 그 레이션 문제를 파악할 수있게 도와 주셨습니다. MyWebApp의 web.config에 보관하고 MyDAL을 참조 할 때 연결을 설정 하시겠습니까? 그럴 예정 이었지만 모든 웹 앱 구성에 보안 데이터베이스 연결을 포함시켜야합니다. 조언 해 주셔서 감사합니다. – clee

+1

주목해야 할 한 가지 다른 점은 EF는 연결 문자열에 대해 ** startup ** 프로젝트의 web.config 또는 app.config를 사용한다는 것입니다. ** 아닙니다 ** 클래스 라이브러리의 app.config. – SnareChops

2

여러 프로젝트간에 공유되는 전체 데이터 레이어에 대해 하나의 클래스 라이브러리를 만드는 것에 대해 이야기하는 경우 충분히 쉽습니다. 모든 모델, 컨텍스트 등을 클래스 라이브러리로 옮기고 클래스 라이브러리 프로젝트를 사용하여 마이그레이션을 실행할 수 있습니다. 다른 프로젝트는 해당 클래스 라이브러리를 참조하며 자체 마이그레이션을 수행하지 않습니다.

그러나 여러 개의 데이터베이스와 관련 데이터 레이어에 대해 이야기 할 때 프로젝트 Foo는 자체 모델, 컨텍스트 및 마이그레이션과 프로젝트 바가 자체 모델, 컨텍스트 및 마이그레이션을 가지고있는 반면 클래스 라이브러리는 IdentityUser 그리고 IdentityDbContext, 일이 좀 더 복잡해집니다. 이러한 컨텍스트를 결합 할 수는 없습니다.따라서 Foo 프로젝트에서 Foo 에 대한 컨텍스트를 인스턴스화해야 할 것입니다. 둘 다 함께 작업해야하는 경우 Identity 컨텍스트가 필요합니다. 그것은 문제가 아니며, 당연히 알고 있어야 할 것입니다.

관련 문제