문제

나는 ASP.NET MVC를 배우려고 노력하고 있으므로 시도하고 있습니다.이것 지도 시간.

그들은 저장소 패턴과 LINQ를 SQL을 직접 호출하는 대신 다른 데이터 액세스 기술로 쉽게 변경하는 방법에 대해 이야기합니다.

컨트롤러 클래스 내에서 LINQ에서 SQL을 사용하면 향후 데이터 액세스 기술을 전환하기가 어렵습니다. 예를 들어, Microsoft LINQ 사용에서 SQL로의 Microsoft Entity 프레임 워크를 데이터 액세스 기술로 전환하기로 결정할 수 있습니다. 이 경우 응용 프로그램 내 데이터베이스에 액세스하는 모든 컨트롤러를 다시 작성해야합니다.

참고 : 나는이 튜토리얼을 읽기 전에 인터페이스가 어떻게 작동했는지 실제로 이해하지 못했으며 여전히 100% 명확하지 않습니다. 나는 지금 그것을 수업의 일종의 '템플릿'으로 본다.

LINQ에서 SQL을 성공적으로 사용한 후에는 이것에 대해 많이 읽은 이후 Ado.net Entity 프레임 워크를 시도하는 것이 좋을 것이라고 생각했습니다. 그들은 저장소 패턴을 사용하면 쉽게 전환 할 수 있도록 테스트 할 것이라고 생각했습니다.

내 질문은 다음과 같습니다. ado.net ef로 변경하려면 어떻게해야합니까?

이것이 제가해야 할 일입니다.

  • movie.edmx 파일을 추가하고 구성하십시오 (내 영화 테이블 추가).
  • Imovierepository를 기반으로 새로운 클래스를 작성하고 MovietEfrepository라고 부를 수 있습니다.
  • 컨트롤러 생성자의 매개 변수를 MovieFrepository로 변경하십시오. 이것은 튜토리얼에서 저장소를 사용하지 않으면 다른 데이터 소스로 변경하면 모든 컨트롤러를 변경하도록 강요 할 것이라고 말하기 때문에 이것이 첫 번째입니다. movierepository 클래스를 지정하기 때문에 어쨌든 모든 컨트롤러를 변경할 필요가 없습니까?
  • 내가해야 할 마지막 조정은보기를 바꾸는 것입니다. LINQ에서 SQL 디자이너가 만든 제품 클래스를 사용하고 있기 때문입니다. 내가 어떻게 이것을 할 것인지 잘 모르겠습니다. DBML 파일에 의존하지 않은 객체를 사용해야했을까요?

ASP.NET MVC에 대해 약간 단순한 견해를 가지고 있다면 용서하십시오. 저는 ASP.NET WebDevelopment에 많은 관심을 가진 WebDesigner입니다.

도움이 되었습니까?

해결책

주입으로 인해 저장소가 분리 될 수 있습니다.

public MoviesController() : this(new **MovieRepository**())

나는 당신이 IOC에 대해 읽고, 쉽고 매우 흥미 롭고, Castle Windsor와 같은 IOC 컨테이너를 사용할 수 있습니다.

이를 통해 콘톨러에는 하나의 생성자, 인터페이스가있는 생성자가 하나만 있으며 변경할 필요는 없습니다.

엔티티를 사용하면 컨트롤러를 사용하여 각 엔티티의 인터페이스를 작성하고 IOC 패턴을 사용하는 것과 동일하게 수행 할 수 있습니다. IOC 컨테이너의 구성 파일 만 변경하면됩니다.

당신이 이런 일을하지 않으면, 당신의 권리는 당신이 말한 모든 것을 바꿔야합니다.

도움이되기를 바랍니다! 내 영어에 대해 죄송합니다!

다른 팁

그래서 며칠 동안 독서와 많은 인터넷 검색을 한 후에 나는 그것을 작동시켰다. 먼저 나는 IOC (Control of Control)가 실제로 무엇을 의미하는지 알아 내려고 노력했다.

내가 찾은 첫 번째 사이트 중 하나는 Unity에 관한 스크린 캐스트가있는 웹 사이트였습니다. .NET의 DI/IOC 프레임 워크입니다.

지금 살펴보면 실제로 이것은 매우 좋은 스크린 캐스트이며 Unity와 IOC/DI를 사용하는 것이 얼마나 쉬운 지에 대한 예입니다. 당시 나는 그것을 완전히 이해하지 못했기 때문에 계속해서 검색을 계속했습니다.

내가 계속해서 달린 웹 사이트는 Martin Fowler의 웹 사이트였습니다.

저에게있어, 코딩 초보자 인이 웹 사이트는 조금 추상적입니다. 또한 이것은 이상하게 들릴지 모르지만 해당 웹 사이트의 글꼴, 라인 높이 및 타이포그래피는 정말 끔찍하여 읽기가 더 어려워졌습니다.

다음 웹 사이트는 Alfredo Fernández가 사용하기 쉽다고 말했기 때문에 Windsor Castle에 관한 것이 었습니다.

문서는 나쁘지 않았지만 기본 예제를 ASP.NET MVC 응용 프로그램으로 변환하는 데 문제가있었습니다. 또한 파트 2와 3은 시작에서 빠졌습니다.

그 후 나는 다른 프레임 워크를 찾기 시작하여 정말 기본적인 예를 찾을 수 있는지 알아 보았습니다. 방금 첫 번째 스크린 캐스트를 다시 보면 더 빨리 수정했을 것입니다. 그러나 어떻게 든 추적을 잃었습니다.

XML 구성 파일에 많은 문제가 있었으며 작동 할 수 없었습니다. Windsor, Structure Map 및 Spring.net을 시도했지만 항상 XML 파일에 붙어 있습니다.

그래서 ASP.NET MVC 사이트로 이동하기로 결정했습니다. 나는 첫 번째 스크린 캐스트와 Mix09 프리젠 테이션을 매우 명확하게 알았으며 사람들이 이야기하는 대부분의 것을 이해했습니다. Storefront 응용 프로그램을 구축 할 때 Rob Conery의 두 번째 스크린 캐스트에 갇혔습니다. 저장소와 IOC/DI에 대해 조금 더 알고 있었기 때문에 Rob Conery의 스크린 캐스트를 다시 시청하는 것이 좋은 생각이라고 생각했습니다. 스크린 캐스트 중 하나에서 그는 모든 샘플을 CodePlex에 업로드하는 것에 대해 이야기합니다.

나는 CodePlex에 가서 소스 파일을 다운로드하지 않고 탐색 할 수 있다는 것을 알았습니다. 나는 Rob Conery가 그의 저장소로 IOC/DI를 어떻게 처리하는지 알아 내려고 노력했다. 그래서 그가 구조 맵을 사용하고 있다는 것을 알게되어 기뻤지 만 XML 구성 파일을 사용하는 대신 모든 인터페이스를 콘크리트 클래스에 등록하는 부트 스트랩 클래스를 사용하고있었습니다.

내 웹 응용 프로그램을 사용하여 이것을 시도한 후 I Finaly는 내 응용 프로그램 (Hooray)에서 작동 할 구조 맵을 얻을 수있었습니다.

또한 LINQ에서 SQL로 오는 제품 클래스에 대한 의존성을 수정하는 방법을 보여주었습니다. 그는 LINQ 쿼리에서 "새 제품 {}"에 의해 호출되는 여분의 객체를 만듭니다.

와우,이 대답은 내가 계획 한 것보다 조금 길지만 코딩과 ASP.NET MVC에 매우 초보자 인 저와 같은 다른 사람들이 도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top