검색을위한 Dapper와 웹 애플리케이션을위한 CRUD 작업을위한 NHibernate

asp.net-mvc-3 dapper nhibernate

문제

나는 검색을 위해 "Dapper"를, CRUD 연산을 위해서는 "NHibernate"를 사용할 계획이다. 따라서,이 접근 방법을 따르는 것이 좋은 디자인이 될 것입니다. 최근에 직면 한 문제 중 하나는 CRUD 화면입니다.

주문 편집 양식이 있다고 가정합니다. Dapper에서 엔티티 (순서)를 가져오고 업데이트하는 동안 CRUD 작업을 수행하기 위해 이러한 객체를 NHibernate 세션에 연결해야합니다. 그것은 직접 필요한 것이 아니라, object.delete ()를 의미합니다.

누구나이 디자인에 대한 제안을 할 수 있었고 더 나아질 가능성이 있습니다. 그것은 asp.net mvc 3을 사용하여 개발 된 웹 응용 프로그램입니다.


대답에 대한 질문 :

  1. 액션에 대한 세션 필터는 현재 작업에 사용중인 것을 의미합니다. 그렇다면 GET 작업의 경우 [NHSession] 대신 [DapperSession]이어야합니까?

    [NHSession] << -------- [DapperSession] 행동 결과 얻기

    • DapperSession.Get.Entity (1000)
    • 돌아 가기보기
  2. 나는 당신이 게시 한 PRG 패턴을 이해하려고 여전히 노력하고 있으며 의심이 든다면 게시 할 것입니다.

  3. "편집"작업에 대해 이러한 모든 일이 일어나기 때문에 NHibernate를 사용하여 객체를 얻는 것이 현명 할 것입니다. 이것은 약간의 오버 헤드 비용으로이 모든 프로세스를 완전히 제거합니다.

수락 된 답변

언뜻보기에 이것은 GET을위한 Dapper (또는 다른 다른 마이크로 ORM)와 컨트롤러의 POST 액션 메소드를위한 NHibernate를 논리적으로 사용하는 것처럼 보입니다. 의사 코드 참조) : -

[DapperSession]
GET ACTION RESULT
  - DapperSession.Get.Entity(1000)
  - Return view

post 메소드의 경우

[NHSession, DapperSession]
POST ACTION RESULT
  If Model.State is valid
    - entity = NHSession.Get.Entity(1000)
    - update entity
    - redirect to ...
  end if

 - DapperSession.Get.Entity(1000)
 - return view

당신이 볼 수 있듯이 이것은 우아하지 않습니다. POST 액션 결과에 다른 액션 필터가 필요할 수도 있습니다. 이 작업을 정리하기 위해 Post Redirect Get (PRG) 패턴을 사용할 수 있으므로 GET 컨트롤러는 Dapper를 사용하고 POST 컨트롤러는 NHSessions에만 액세스 할 수 있습니다.

이 패턴을 설정하는 방법에 대한 자세한 내용은이 허용 된 답변을 참조하십시오.

이제 GET 및 POST 작업 결과는 다음과 같습니다.

[DapperSession, ImportModelStateFromTempData]
GET ACTION RESULT
  - DapperSession.Get.Entity(1000)
  - Return view

post 메소드의 경우

[NHSession, ExportModelStateToTempData]
POST ACTION RESULT
  If Model.State is valid
    - entity = NHSession.Get.Entity(1000)
    - update entity
    - redirect to ...
  end if

 - return redirect to GET

그러나 당신이 볼 수 있듯이 내가 실제로하고있는 모든 것은 하나의 액션 필터 속성을 다른 액션 필터 속성으로 대체하는 것이다. 하지만 (이것은 크지 만 내 의견으로는) PRG 패턴을 활용하면 얻을 수있는 이점을 누릴 수 있습니다! 솔직히 말해서이 질문은 직접적으로 대답하지는 않을 것이지만, 따라하기에 좋은 방법입니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.